Zurück zum Katalog
Season 36 5 Episoden 19 min 2026

Matplotlib

v3.10 — 2026 Edition. Ein umfassender Audiokurs über Matplotlib, Pythons beliebteste Visualisierungsbibliothek. Lerne die Kernidentität, den Lebenszyklus eines Plots, fortgeschrittene Layouts, Plot-Arten und Power-User-Workflows für Version 3.10 kennen.

Datenvisualisierung Datenwissenschaft
Matplotlib
Aktuelle Wiedergabe
Click play to start
0:00
0:00
1
Die Kernidentität: Figures, Axes und Interfaces
Willkommen bei Matplotlib. In dieser Episode definieren wir das mentale Modell, das den Kern von Pythons beliebtester Visualisierungsbibliothek bildet. Lerne den Unterschied zwischen einer Figure und einer Axes kennen und erfahre, warum das explizite Object-Oriented Interface dein bestes Werkzeug ist.
3m 43s
2
Der Lebenszyklus eines Plots
Entdecke, wie man einen Plot von den Rohdaten zu einer beschrifteten, formatierten Darstellung bringt. Wir gehen den Lebenszyklus eines einfachen Charts durch und zeigen dir genau, wie du Labels, Titel und benutzerdefinierte Tick Formatters über das explizite Interface hinzufügst.
3m 47s
3
Layouts meistern: Subplots und Mosaics
Lerne, wie du mehrere Plots auf einem einzigen Canvas verwaltest, ohne dass sie sich überlappen. Diese Episode behandelt plt.subplots, die Leistungsfähigkeit von subplot_mosaic für semantische Layouts und die Verwendung von constrained layout, um alles ordentlich zu halten.
3m 59s
4
Jenseits der Linie: Die wichtigsten Plot-Arten entdecken
Gehe über einfache Linien und Scatter Plots hinaus. Wir veranschaulichen die Plot-Kategorien von Matplotlib und stellen statistische Verteilungs-Plots den Funktionen für gerasterte Daten wie imshow und pcolormesh gegenüber.
4m 02s
5
Power-User-Workflows: Styles und rcParams
Verwandle das Aussehen deiner Plots im Handumdrehen. In unserer letzten Episode untersuchen wir, wie man vordefinierte Style Sheets verwendet und globale Einstellungen mit rcParams dynamisch anpasst.
4m 09s

Episoden

1

Die Kernidentität: Figures, Axes und Interfaces

3m 43s

Willkommen bei Matplotlib. In dieser Episode definieren wir das mentale Modell, das den Kern von Pythons beliebtester Visualisierungsbibliothek bildet. Lerne den Unterschied zwischen einer Figure und einer Axes kennen und erfahre, warum das explizite Object-Oriented Interface dein bestes Werkzeug ist.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. Matplotlib, Folge 1 von 5. Du kopierst eine Plot-Lösung von Stack Overflow, fügst sie in deinen Code ein, und plötzlich überschreibt dein neues Chart das alte. Der Code sieht richtig aus, verhält sich aber wie ein Frankenstein-Monster. Das passiert, weil die meisten Online-Beispiele zwei völlig unterschiedliche Arten mischen, die Library zu nutzen, ohne zu erklären, warum. Um das zu fixen, musst du das Kernkonzept verstehen: Figures, Axes und Interfaces. Matplotlib ist das Fundament der Python-Visualisierung. Pandas, Seaborn und viele andere Libraries bauen darauf auf. Aber Entwickler stolpern oft über die Architektur. Um sauberen Visualisierungs-Code zu schreiben, musst du den Container vom Content trennen. In Matplotlib bedeutet das, den Unterschied zwischen einer Figure und einer Axes zu verstehen. Die Figure ist dein Canvas. Sie ist der Top-Level-Container, der das komplette Fenster, den Hintergrund und alle Elemente darin enthält. Aber eine Figure zeichnet keine Daten. Dafür brauchst du eine Axes. Die Axes ist der eigentliche Plot. Das ist der Bereich, in dem deine Linien, Balken und Scatter-Points leben. Eine Figure kann mehrere Axes enthalten, wie zum Beispiel ein Grid aus vier Subplots. Denk dran: Axes ist nicht der Plural vom Wort Axis. Ein Axes-Objekt enthält zwei oder drei einzelne Axis-Objekte, die die spezifischen Zahlenstrahlen und Ticks verwalten. Du hängst Daten an die Axes an, und die Axes ist an die Figure angehängt. Sobald du weißt, was diese Objekte sind, musst du entscheiden, wie du mit ihnen interagierst. Genau hier fängt die Verwirrung an. Matplotlib gibt dir zwei verschiedene Wege, ein Chart zu bauen: das implizite Interface und das explizite Interface. Das implizite Interface basiert auf einem Modul namens pyplot. Es trackt den State deines Programms im Hintergrund. Wenn du eine Plot-Funktion direkt aufrufst, geht Matplotlib davon aus, dass du auf der aktuell aktiven Figure und Axes zeichnen willst. Wenn noch keine existieren, werden sie für dich erstellt. Das ist super praktisch für ein schnelles Throwaway-Script, wenn du einfach nur schnell ein paar Daten untersuchen musst. Aber weil es sich auf einen versteckten Global State verlässt, wird es in größeren Anwendungen unvorhersehbar. Das explizite Interface, oft auch objektorientiertes Interface genannt, macht Schluss mit dem Rätselraten. Du instanziierst deine Objekte im Voraus. Zuerst erstellst du die Figure und die Axes zusammen, dann rufst du Methoden direkt auf diesen spezifischen Objekten auf. Du verlässt dich nie darauf, dass die Library errät, welchen Plot du ansprechen willst. Wenn du ein wiederverwendbares Dashboard baust, nutze immer das explizite Interface. Du kannst Helper-Funktionen schreiben, die ein Axes-Objekt als Argument nehmen, Daten darauf plotten und es zurückgeben. Der Funktion ist der Global State der Anwendung völlig egal. Sie modifiziert einfach nur das Objekt, das ihr übergeben wurde. Das macht deinen Code modular und testbar. Hier ist die wichtigste Erkenntnis: Du kannst beide Methoden nutzen, aber du solltest sie niemals mischen. Nutze das implizite pyplot-Interface für schnelle Exploration in einem Notebook, und nutze das explizite objektorientierte Interface für Production-Code. Wenn dir die Show gefällt und du uns unterstützen willst, findest du uns, indem du auf Patreon nach DevStoriesEU suchst. Das war's für diese Folge. Danke fürs Zuhören, und viel Spaß beim Bauen!
2

Der Lebenszyklus eines Plots

3m 47s

Entdecke, wie man einen Plot von den Rohdaten zu einer beschrifteten, formatierten Darstellung bringt. Wir gehen den Lebenszyklus eines einfachen Charts durch und zeigen dir genau, wie du Labels, Titel und benutzerdefinierte Tick Formatters über das explizite Interface hinzufügst.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. Matplotlib, Folge 2 von 5. Zahlen auf einer Achse zu formatieren, kann sich wie ein Wrestling-Match anfühlen. Du willst ein sauberes hundert K mit Dollarzeichen, bekommst aber stattdessen Scientific Notation oder rohe Integers, die den Bildschirm überladen. Der Fix ist erstaunlich einfach, sobald du gelernt hast, die Kontrolle über deine Achse direkt an eine Standard-Python-Funktion zu übergeben. Heute schauen wir uns den Lifecycle eines Plots über das Explicit Axes Interface an. Das Explicit Interface behandelt Charting als einen vorhersehbaren, schrittweisen Prozess. Du rufst immer Methoden auf einem bestimmten Objekt auf. Der Lifecycle beginnt mit dem Erstellen einer Figure und eines Axes-Objekts. Die Figure ist die leere Arbeitsfläche. Das Axes-Objekt repräsentiert den eigentlichen Bereich, in dem deine Daten leben werden. Sobald du dieses Axes-Objekt hast, ist jede Anpassung einfach ein weiterer Method Call, der darauf angewendet wird. Stell dir ein Szenario vor, in dem du eine Liste von Firmennamen und eine Liste ihrer Umsatzzahlen hast. Um diese Daten auf den Bildschirm zu bekommen, rufst du eine Plot-Methode auf dem Axes-Objekt auf. Für ein horizontales Bar Chart rufst du bar h auf und übergibst die Namen und den Umsatz. An diesem Punkt hast du einen funktionsfähigen Plot, aber ihm fehlt der Kontext. Die nächste Phase des Lifecycles ist es, diesen Kontext hinzuzufügen. Ein üblicher Ansatz ist es, den Title, das x Label und das y Label einzeln zu setzen. Das Axes-Objekt hat jedoch eine einheitliche set Methode. Du kannst set aufrufen und Keyword Arguments für den Title, das x Label und das y Label alle auf einmal übergeben. Diese einzelne Zeile Code kümmert sich um den strukturellen Text deines Charts. Wenn du jemals überprüfen musst, was aktuell angewendet wird, kannst du die entsprechenden get Methoden verwenden, wie get x tick labels, um den aktuellen State abzurufen, bevor du ihn änderst. Das bringt uns zum wichtigsten Teil des Fine-Tunings: dem Formatieren der Achsenzahlen. Wenn du Umsatz plottest, erzeugen große Zahlen unübersichtliche Achsen. Matplotlib zeigt vielleicht hunderttausend mit all seinen Nullen an. Du willst aber, dass dort hundert K mit einem Dollarzeichen steht. Hier ist die entscheidende Erkenntnis. Du musst dich nicht durch obskure Matplotlib-Settings wühlen, um das zu fixen. Du schreibst einfach eine ganz normale Python-Funktion. Du definierst eine Funktion, die zwei Argumente nimmt: den Tick Value und seine Position. Innerhalb dieser Funktion schreibst du Standard-Python-Logik. Du prüfst, ob der Wert in den Tausendern liegt, teilst ihn durch tausend und gibst einen formatierten String mit einem Dollarzeichen und einem großen K zurück. Um das anzuwenden, sagst du dem Axes-Objekt, dass es deine Funktion für seine Tick Marks verwenden soll. Du greifst auf die x-axis Property auf deinem Axes-Objekt zu und rufst dann eine Methode namens set major formatter auf. Du übergibst deine Custom Function direkt in diese Methode. Matplotlib übernimmt von da an. Während es den Plot zeichnet, gibt es jeden einzelnen Tick Value auf der x-Achse durch deine Python-Funktion und zeigt den sauberen String an, den du zurückgegeben hast. Das Explicit Interface nimmt das Rätselraten aus dem Customizing von Charts, indem es den Prozess in eine zuverlässige Abfolge unterteilt: Du erstellst die Axes, mappst die Raw Data, wendest deine Labels über eine einzige set Methode an und fängst das Tick Formatting komplett mit deiner eigenen Logik ab. Das war es für diese Folge. Danke fürs Zuhören und keep building!
3

Layouts meistern: Subplots und Mosaics

3m 59s

Lerne, wie du mehrere Plots auf einem einzigen Canvas verwaltest, ohne dass sie sich überlappen. Diese Episode behandelt plt.subplots, die Leistungsfähigkeit von subplot_mosaic für semantische Layouts und die Verwendung von constrained layout, um alles ordentlich zu halten.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. Matplotlib, Folge 3 von 5. Du musst ein Dashboard mit einem breiten Header Chart und zwei kleineren Charts darunter bauen. Früher bedeutete das, Grid Fractions zu berechnen und Axes manuell zu platzieren. Jetzt kannst du genau dieses Layout bauen, indem du einen ASCII Art String eintippst. Das ist Mastering Layouts: Subplots und Mosaics. Die meisten Datenvisualisierungen beginnen mit einem einfachen Grid. Wenn du ein Zwei-mal-Zwei-Layout brauchst, rufst du die Standard-Subplots-Funktion auf, gibst die Anzahl der Zeilen und Spalten an, und Matplotlib gibt dir ein Figure-Objekt und ein mehrdimensionales Array mit deinen einzelnen Axes zurück. Du nutzt Standard-Array-Indexing, um eine bestimmte Axis auszuwählen und deine Daten zu zeichnen. Das funktioniert perfekt, bis du Text hinzufügst. Standardmäßig positioniert Matplotlib die Axes basierend auf festen Proportionen der Figure Size. Der physische Platz, der von deinen Titles, Axis Labels oder Tick Marks eingenommen wird, wird dabei nicht berücksichtigt. Das führt dazu, dass die X-Axis Labels deiner oberen Zeile oft mit den Titles deiner unteren Zeile überlappen. Anstatt Custom Spacing Adjustments zu schreiben, solltest du das schon bei der Figure Creation lösen. Übergib das Layout-Argument, gesetzt auf das Wort constrained. Constrained Layout ist eine Optimization Engine. Kurz bevor die Figure gezeichnet wird, misst sie die Bounding Boxes all deiner Text Elements und schiebt die Axes genau so weit auseinander, dass Kollisionen verhindert werden. Standard-Subplots und Constrained Layouts decken symmetrische Grids ab. Aber Dashboards sind selten symmetrisch. Oft brauchst du Charts, die sich über mehrere Zeilen oder Spalten erstrecken. Das bringt uns zurück zum breiten Header Chart in der obersten Zeile, mit zwei kleineren Charts nebeneinander darunter. Anstatt dich mit Low-Level Grid Specification Objects herumzuschlagen, kannst du eine semantische Methode namens Subplot Mosaic nutzen. Du rufst Subplot Mosaic direkt auf deinem Figure-Objekt auf. Es akzeptiert eine visuelle Repräsentation deines Layouts, komplett in Strings geschrieben. Jedes einzigartige Zeichen, das du eintippst, repräsentiert einen eigenen Chart. Wenn ein Zeichen über Zeilen oder Spalten hinweg wiederholt wird, streckt sich dieser Chart, um diese Bereiche auszufüllen. Um unser Dashboard-Layout zu bauen, kannst du einen einzigen String übergeben, in dem die Zeilen durch Semikolons getrennt sind. Für die obere Zeile tippst du zweimal den Großbuchstaben A ein. Dann ein Semikolon. Für die untere Zeile tippst du den Großbuchstaben B und dann den Großbuchstaben C ein. Der gesamte String ist einfach A A Semikolon B C. Matplotlib parst diesen String und sieht, dass A in der ersten Zeile zwei Spalten belegt, also erstellt es eine breite Axis, die sich über den oberen Bereich erstreckt. Es sieht, dass B und C jeweils eine Spalte in der zweiten Zeile belegen, also erstellt es zwei kleinere Axes darunter. Hier ist die entscheidende Erkenntnis. Weil Standard-Arrays in komplexen Layouts ihre Bedeutung verlieren, gibt Subplot Mosaic kein Array zurück. Es gibt ein Standard-Python-Dictionary zurück. Die Keys dieses Dictionarys sind genau die String-Zeichen, die du in deinem Design festgelegt hast. Wenn du einen Line Chart in deinem breiten Header zeichnen willst, greifst du einfach mit dem Key A auf das Dictionary zu. Wenn du einen Scatter Plot unten rechts platzieren willst, greifst du mit dem Key C auf das Dictionary zu. Dein Plotting-Code wird dadurch komplett von den Grid-Koordinaten entkoppelt. Du kannst dieses System auch nutzen, um absichtlich White Space zu erzeugen. Wenn du eine leere Lücke in deinem Grid haben willst, setzt du einfach einen Punkt in deinen Layout-String. Matplotlib liest den Punkt und lässt genau diese Grid-Zelle komplett leer. Komplexe Grid Math gehört der Vergangenheit an. Modernes Layout-Design bedeutet einfach nur, die visuelle Form einzutippen, die du haben willst, und das Dictionary deine Daten genau dem richtigen Platz auf dem Bildschirm zuordnen zu lassen. Das war es für diese Folge. Danke fürs Zuhören und keep building!
4

Jenseits der Linie: Die wichtigsten Plot-Arten entdecken

4m 02s

Gehe über einfache Linien und Scatter Plots hinaus. Wir veranschaulichen die Plot-Kategorien von Matplotlib und stellen statistische Verteilungs-Plots den Funktionen für gerasterte Daten wie imshow und pcolormesh gegenüber.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. Matplotlib, Folge 4 von 5. Du hast zehntausend Datenpunkte, wirfst sie auf einen Scatter Plot und landest bei einem riesigen, unleserlichen Tintenklecks, bei dem die überlappenden Punkte das eigentliche Muster verdecken. Du hast ein Pairwise-Tool für ein Density-Problem gewählt. Um über den Standard-Line-Chart hinauszukommen, musst du wissen, wie du die Form deiner Daten dem richtigen visuellen Tool zuordnest. Genau das behandeln wir in Beyond the Line: Exploring Core Plot Types. Matplotlib ordnet seine Core Plots basierend auf der Struktur deiner Daten in grobe Kategorien ein. Die drei grundlegenden Kategorien sind paarweise Daten, statistische Verteilungen und Gridded Data. Die einfachste Form ist pairwise. Du hast ein Array mit X-Werten und ein passendes Array mit Y-Werten. Du nutzt die plot-Funktion, wenn diese Punkte eine logische Sequenz haben, wie bei einer Time Series, wo das Zeichnen einer durchgehenden Linie zwischen ihnen einen Trend zeigt. Wenn die Punkte unabhängige Beobachtungen sind, verwendest du die scatter-Funktion, um einzelne Marker zu platzieren. Aber Scatter Plots stoßen bei hoher Dichte an ihre Grenzen. Das bringt uns zur zweiten Kategorie, die statistische Verteilungen behandelt. Hier ist die wichtigste Erkenntnis. Wenn du zehntausend überlappende Punkte hast, interessiert dich die genaue Koordinate von Punkt Nummer viertausend eigentlich gar nicht. Dich interessiert, wo die Punkte clustern. Hier kommt eine Funktion wie hexbin ins Spiel. Sie nimmt dieselben X- und Y-Arrays wie ein Scatter Plot, gruppiert die geometrische Fläche aber in hexagonale Bins und färbt sie basierend auf der Punktdichte ein, um das verborgene Muster zu enthüllen. Stell dir nun ein einzelnes Array vor, das die rohen Altersdaten all deiner Kunden enthält. Sie einzeln als Punkte zu plotten, gibt dir nur nutzloses Rauschen. Stattdessen fütterst du diese einzelne flache Liste in die hist-Funktion. Ein Histogramm gruppiert die einzelnen Altersangaben automatisch in Bereiche und zeigt dir das Volumen der Kunden in ihren Zwanzigern im Vergleich zu denen in ihren Fünfzigern. Wenn du diese Altersverteilungen über fünf verschiedene Stores hinweg nebeneinander vergleichen musst, wechselst du zu einem Boxplot. Der Boxplot fasst die Bereiche, Mediane und Outlier sauber zusammen. Wenn du mehr Details brauchst, als ein Boxplot bietet, zeichnet ein Violinplot die komplette Kurvenform des Density-Profils für jeden Store. Die dritte Hauptkategorie sind Gridded Data. Das gilt, wenn deine Daten eine zweidimensionale Matrix sind und du einen kontinuierlichen Wert über eine Fläche visualisieren musst. Denk an eine zweidimensionale Temperaturkarte über ein geografisches Grid. Jede Position hat eine X-Koordinate, eine Y-Koordinate und einen Temperaturwert. Du willst keine Linien oder Scatter-Punkte, um das darzustellen. Du willst eine durchgehende, farbige Fläche. Matplotlib bietet für diesen Zweck imshow und pcolormesh. Du nutzt imshow, wenn deine Daten auf einem perfekt regelmäßigen Grid liegen, wie die Pixel eines Digitalfotos. Es geht von einem gleichmäßigen Abstand zwischen jedem Datenpunkt aus und rendert sehr schnell. Wenn deine Grid-Koordinaten unregelmäßig sind, sich deine Messgrenzen in der Nähe bestimmter geografischer Merkmale vielleicht verzerren oder stauchen, verwendest du pcolormesh. Es berechnet und zeichnet individuelle Vierecke für jede einzelne Zelle, die sich exakt an die verzerrte Form deiner Koordinaten-Arrays anpassen. Wenn du entscheidest, welche Matplotlib-Funktion du aufrufen willst, ignoriere, wie das finale Bild aussehen soll, und schau strikt auf die mathematische Form deiner Input-Arrays: Sind es sequentielle Paare, flache Listen oder zweidimensionale Matrizen. Das war's für diese Folge. Danke fürs Zuhören, und keep building!
5

Power-User-Workflows: Styles und rcParams

4m 09s

Verwandle das Aussehen deiner Plots im Handumdrehen. In unserer letzten Episode untersuchen wir, wie man vordefinierte Style Sheets verwendet und globale Einstellungen mit rcParams dynamisch anpasst.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. Matplotlib, Folge 5 von 5. Man sieht oft, wie Leute zwanzig Zeilen repetitiven Code schreiben, um Tick Labels, Grid Lines und Fonts für jeden einzelnen Plot, den sie erstellen, anzupassen. Ein einziger Command kann all diese Änderungen sofort im gesamten Projekt anwenden. Diese Folge behandelt Power-User Workflows: Styles und rcParams. Der Standard-Matplotlib-Look ist sehr einprägsam, aber die manuelle Anpassung einzelner Elemente pro Plot an eine bestimmte Ästhetik ist ineffizient. Stattdessen nutzt du Style Sheets. Matplotlib kommt mit mehreren built-in Styles. Du rufst eine Funktion namens style dot use aus dem pyplot Modul auf und übergibst einen String, wie ggplot oder classic. Wenn du eine Visualisierung für eine Präsentationsfolie mit Dark Theme vorbereitest, musst du den Background nicht manuell auf Schwarz, die Axes auf Weiß und den Text auf Hellgrau ändern. Du führst style dot use mit dark underscore background ganz oben in deinem Script aus. Jede Figure, die nach dieser Zeile generiert wird, erbt sofort diesen spezifischen Look. Du kannst Style Sheets sogar kombinieren. Wenn du eine Liste von Style-Namen übergibst, wendet Matplotlib sie der Reihe nach von links nach rechts an. Die rechts aufgelisteten Styles überschreiben dabei sich überschneidende Settings der Styles auf der linken Seite. Hier ist die wichtigste Erkenntnis. Der Aufruf von style dot use ändert den globalen State für den Rest deiner Python Session. Wenn du einen bestimmten Style nur für einen einzelnen Chart haben willst, nutzt du einen Context Manager namens style dot context. Du öffnest den Context, gibst den Style-Namen an und schreibst deinen Plotting-Code innerhalb dieses Blocks. Sobald der Block endet, kehren deine Plots zu dem globalen Style zurück, der vorher aktiv war. Unter diesen Style Sheets liegt ein riesiges Configuration Dictionary namens rcParams. Das r und c stehen für Runtime Configuration. Jede Default Property, die Matplotlib nutzt, um eine Figure zu rendern, lebt in diesem Dictionary. Font Sizes, Line Widths, Default Figure Dimensions und Marker Styles sind alle auf spezifische String Keys gemappt. Wenn du ein Style Sheet anwendest, machst du im Hintergrund im Grunde ein Bulk-Update des rcParams Dictionarys. Du kannst aber auch direkt damit interagieren, um granulare, dynamische Anpassungen zu machen. Angenommen, du hast einen Style angewendet, der dir gefällt, aber die Default Line Width ist zu dünn für deine Zwecke. Du greifst auf das rcParams Dictionary zu, gibst den Key für lines dot linewidth an und weist ihm einen neuen numerischen Wert zu. Von da an hat jede Linie, die in deiner Session gezeichnet wird, per Default diese dickere Breite. Matplotlib bietet auch eine Convenience Function namens rc, um das zu handhaben. Anstatt das Dictionary Key für Key zu modifizieren, rufst du rc auf, übergibst einen Top-Level Group Name wie font und stellst dann Keyword Arguments für die spezifischen Properties wie weight oder size bereit. Das ist ein viel saubererer Weg, um mehrere zusammengehörige Settings auf einmal zu updaten. Du kannst auch deine eigenen Custom Styles definieren. Ein Style Sheet ist einfach eine Textdatei mit einer dot mplstyle Extension. Darin enthält es eine einfache Liste von rcParams Key-Value Pairs. Du speicherst diese Datei, übergibst ihren Path an style dot use, und dein Custom Corporate Branding wird sofort auf jeden Plot angewendet, ohne deinen eigentlichen Data Code zu verschmutzen. Die wahre Power der Matplotlib Customization ist es, deine Data Logic von deinen ästhetischen Entscheidungen zu entkoppeln. Regeln global zu setzen, hält deine Plotting Functions lean und stellt visuelle Konsistenz in deiner gesamten Codebase sicher. Ich ermutige dich, die offizielle Documentation zu erkunden, um die komplette Liste der verfügbaren Runtime Configurations zu sehen und selbst zu versuchen, ein Custom Style Sheet zu bauen, oder besuche devstories dot eu, um Themen für zukünftige Serien vorzuschlagen. Danke, dass du ein paar Minuten mit mir verbracht hast. Bis zum nächsten Mal, mach's gut.