Visualisierung mit Matplotlib und Seaborn

Wandle pandas-Tabellen mit Python in übersichtliche Diagramme um. Erstelle Figures und Axes in Matplotlib, zeichne Linien-, Streu- und Balkendiagramme und stelle Daten nach dem Aggregieren und Umformen direkt aus pandas dar. Nutze seaborn für statistische Diagramme, Histogramme, Boxplots und Heatmaps, vergleiche Gruppen mit Small Multiples und Facetten und ergänze jede Abbildung vor dem Export für einen Bericht oder das Web um Beschriftungen und Annotationen.

MittelEinheit 7 von 8 in Kurs: Datenanalyse mit Python – NumPy, pandas und Matplotlib

Was du lernst

  1. Erstelle mit der objektorientierten Schnittstelle von Matplotlib eine Figure und ihre Axes, zeichne darin Linien-, Streu- und Balkendiagramme und lege Titel, Beschriftungen, Teilstriche, Achsengrenzen, Legenden und Stile fest.
    • Eine Figure mit ihren Axes-Objekten anlegen
      Verstehe, wie ein Matplotlib-Diagramm aus einer Figure, einem oder mehreren Axes-Objekten und den darin gezeichneten Elementen aufgebaut ist, und wähle zwischen der pyplot- und der objektorientierten Schreibweise für den Darstellungscode.
    • Linien- und Streudiagramme zeichnen
      Zeichne Werte entlang einer geordneten Achse mit ax.plot und einzelne Beobachtungen mit ax.scatter und lege Farbe, Linienstil, Marker, Markergröße und Transparenz fest.
    • Kategorien mit Balkendiagrammen vergleichen
      Zeichne vertikale, horizontale, gruppierte und gestapelte Balkendiagramme mit ax.bar und ax.barh und beschrifte die Balken mit ihren Werten.
    • Ein Diagramm beschriften, skalieren und gestalten
      Lege Titel, Achsenbeschriftungen, Achsengrenzen, Teilstriche, Teilstrichformate, Skalen, Legenden und Gitternetzlinien fest und ändere das allgemeine Erscheinungsbild von Diagrammen mit Stilvorlagen und Einstellungen.
  2. Zeichne Diagramme direkt aus Series und DataFrames mit der pandas-Methode plot und aggregiere, sortiere und forme Tabellen zuvor um, damit jedes Diagramm die gewünschten Werte zeigt.
    • Die plot-Methode von pandas nutzen
      Erstelle Linien-, Balken-, Histogramm-, Box-, Flächen-, Kreis- und Streudiagramme aus einer Series oder einem DataFrame und passe die zurückgegebenen Matplotlib-Axes an.
    • Daten vor der grafischen Darstellung umformen
      Aggregiere, zähle, sortiere, pivotiere und forme eine Tabelle ins Langformat um, sodass sie genau die Werte enthält, die ein Diagramm zeigen soll, und zwar in dem von pandas oder seaborn erwarteten Format.
  3. Ordne mit seaborn DataFrame-Spalten Positionen, Farben und Stilen zu, stelle Zusammenhänge zwischen numerischen Variablen mit zusammenfassenden Trends dar und vergleiche Gruppen mit Diagrammen für kategoriale Daten.
    • Spalten in seaborn visuellen Merkmalen zuordnen
      Gib DataFrame-Spalten für Position, Farbe, Stil und Größe an, unterscheide Funktionen auf Axes-Ebene von solchen auf Figure-Ebene und lege seaborn-Gestaltungsschemata und Farbpaletten fest.
    • Zusammenhänge zwischen numerischen Variablen darstellen
      Zeichne mit seaborn Streudiagramme, aggregierte Liniendiagramme mit Unsicherheitsbändern, Regressionsgeraden und Pairplots und lies ab, was die Bänder und Linien zeigen und was nicht.
    • Gruppen mit Diagrammen für kategoriale Daten vergleichen
      Vergleiche eine numerische Variable zwischen Kategorien mit Balken-, Häufigkeits-, Punkt-, Streifen- und Schwarmdiagrammen und wähle Schätzfunktion, Fehlerbalken, Reihenfolge und Ausrichtung.
  4. Zeige mit Histogrammen, Dichtekurven, Boxplots und Violinplots, wie eine numerische Variable verteilt ist, und stelle eine Tabelle mit Werten oder Korrelationen als Heatmap dar.
    • Eine Verteilung mit Histogrammen und Dichtekurven darstellen
      Erstelle Histogramme in Matplotlib, pandas und seaborn, wähle Klassen und Skalen und ergänze oder vergleiche geglättete Dichtekurven.
    • Verteilungen mit Boxplots zusammenfassen und vergleichen
      Lies und zeichne Boxplots anhand der Quartile und der 1,5 × IQR-Regel, vergleiche damit Gruppen und zeige mit Violinplots und Streifendiagrammen, was eine Box verdeckt.
    • Eine Wertematrix als Heatmap darstellen
      Wandle eine Pivot-Tabelle oder Korrelationsmatrix mit seaborn oder Matplotlib in eine Heatmap um und lege Annotationen, Zahlenformate, Farbskalen und Farbskalengrenzen fest.
  5. Ordne Small Multiples mit Matplotlib-Subplots und seaborn-Facetten an, hebe Wichtiges mit Text, Pfeilen und Referenzlinien hervor und speichere Abbildungen im passenden Format und in der passenden Größe für Berichte und das Web.
    • Mehrere Diagramme in einer Figure anordnen
      Erstelle mit plt.subplots Raster aus Axes-Objekten, teile Skalen zwischen Teilgrafiken, fülle die Teilgrafiken in einer Schleife, passe Abstände und Titel an und erstelle Teilgrafiken unterschiedlicher Größe.
    • Daten mit seaborn in Facetten darstellen
      Teile ein Diagramm anhand einer oder zweier kategorialer Variablen mit den Argumenten col, row und col_wrap von Funktionen auf Figure-Ebene oder mit FacetGrid in Teilgrafiken auf und passe das entstehende Raster an.
    • Annotationen und Referenzlinien hinzufügen
      Platziere Text, Pfeile, Referenzlinien, schattierte Bereiche und Wertbeschriftungen in einem Diagramm, entweder in Datenkoordinaten oder in Koordinaten relativ zum Axes.
    • Abbildungen für Berichte und das Web speichern
      Exportiere Figures mit savefig in Raster- oder Vektorformaten, lege Größe, Auflösung, Ränder und Hintergrund fest und speichere in Skripten, Notebooks und Schleifen zum richtigen Zeitpunkt.

Visualisierung mit Matplotlib und Seaborn einfach erklärt

5 Kapitel

1

Diagramme mit Figure- und Axes-Objekten von Matplotlib erstellen

Ein Zeichenbefehl braucht einen Ort zum Zeichnen. Matplotlib macht diesen Ort ausdrücklich kenntlich: Eine Figure enthält einen oder mehrere Zeichenbereiche, und jeder Bereich enthält die Markierungen und Beschriftungen. Beginne mit einem Bereich und ergänze dann mit denselben Objekten Linien, Punkte, Balken und nützliche Einstellungen. Wenn du die Figure und jeden Zeichenbereich benennst, kannst du leichter das richtige Diagramm ändern, wenn ein Notebook wächst oder eine Figure mehrere Teilgrafiken enthält.

1.1 Eine Figure mit ihren Axes-Objekten anlegen

Matplotlib ist die Standardbibliothek für Diagramme in Python; sowohl pandas als auch seaborn zeichnen damit. Üblicherweise wird sie mit import matplotlib.pyplot as plt importiert. In einem Jupyter-Notebook erscheint ein Diagramm unter der Zelle, die es zeichnet; in einem Skript zeigt plt.show() die offenen Figures an und wartet in einem normalen Skript, bis ihre Fenster geschlossen werden.

Eine Figure ist die gesamte Zeichenfläche: das Bild, das angezeigt oder gespeichert wird. Ein Axes ist ein Zeichenbereich innerhalb der Figure mit eigenen Daten, einem eigenen Titel, Achsenbeschriftungen und Achsengrenzen; eine Figure kann mehrere davon enthalten. Eine Achse ist eine Zahlengerade eines Axes, also die x-Achse oder die y-Achse, mit ihren Teilstrichen und Teilstrichbeschriftungen. Jedes sichtbare Element, etwa eine Linie, ein Marker, ein Text oder ein Balken, heißt Artist.

fig, ax = plt.subplots() erstellt eine Figure mit einem Axes und gibt beide Objekte zurück. figsize=(width, height) legt die Größe der Figure in Zoll fest. Der Standard beträgt 6,4 × 4,8 Zoll bei 100 Punkten pro Zoll, sodass eine Figure mit Standardeinstellungen auf dem Bildschirm 640 × 480 Pixel groß ist; plt.subplots(figsize=(8, 4)) erstellt eine breitere, flachere Figure.

Matplotlib bietet zwei Schreibweisen. In der objektorientierten Schreibweise rufst du Methoden auf konkreten Objekten auf: ax.plot(...), ax.set_title(...). In der pyplot-Schreibweise wirken Funktionen wie plt.plot(...) und plt.title(...) auf das „aktuelle“ Axes, meist das zuletzt erstellte. Beide zeichnen dieselben Diagramme; die objektorientierte Schreibweise ist übersichtlicher, sobald eine Figure mehr als ein Axes enthält oder der Darstellungscode in einer Funktion steht. Deshalb verwendet dieser Kurs sie.

Die beiden Schreibweisen verwenden unterschiedliche Namen für dieselben Einstellungen: plt.title, plt.xlabel und plt.xlim entsprechen ax.set_title, ax.set_xlabel und ax.set_xlim. Ein häufiger Fehler ist ax.title("Rainfall"): Bei einem Axes ist title ein Attribut, das ein Textobjekt enthält. Der Aufruf löst daher TypeError: 'Text' object is not callable aus. Verwende ax.set_title("Rainfall").

months = [1, 2, 3, 4, 5, 6]; temp_c = [3, 5, 9, 13, 17, 20], dann

fig, ax = plt.subplots(figsize=(8, 4))
ax.plot(months, temp_c)
ax.set_title("Mean monthly temperature")
ax.set_xlabel("Month")
ax.set_ylabel("Temperature (°C)")

.

Zeichenaufrufe fügen einem Axes Elemente hinzu; sie ersetzen den vorhandenen Inhalt nicht. Ein zweiter Aufruf von ax.plot(...) auf demselben ax ergänzt das Diagramm um eine zweite Linie. Für ein separates Diagramm erstelle mit einem weiteren Aufruf von plt.subplots() eine neue Figure oder zeichne auf einem anderen Axes einer Figure mit mehreren Teilgrafiken.

pyplot hält jede von ihm erstellte Figure offen, bis sie mit plt.close(fig) oder plt.close("all") geschlossen wird. Offene Figures belegen Speicher; sobald mehr als 20 offen sind, gibt Matplotlib eine Warnung aus. Code, der Figures in einer Schleife erstellt, sollte jede Figure nach dem Speichern schließen.

Wichtige Erkenntnisse

  • Eine Figure ist die Zeichenfläche; ein Axes ist ein Zeichenbereich.
  • Rufe Methoden auf dem Axes auf, das geändert werden soll.
  • Erneutes Zeichnen auf demselben Axes fügt Artists hinzu.
  • Schließe gespeicherte Figures in Schleifen.

1.2 Linien- und Streudiagramme zeichnen

ax.plot(x, y) zeichnet Marker oder gerade Liniensegmente, die die Punkte in der angegebenen Reihenfolge verbinden. Ein Liniendiagramm eignet sich für eine Größe, die entlang einer geordneten Variablen wie Zeit oder Entfernung gemessen wird. Bei einem Argument, ax.plot(y), sind die x-Werte standardmäßig 0, 1, 2, ….

Da die Punkte in der angegebenen Reihenfolge verbunden werden, erzeugen unsortierte x-Werte eine Zickzacklinie, die im Diagramm hin und her verläuft. Bei x = [3, 1, 2] verläuft die Linie von x = 3 zurück zu x = 1 und dann vorwärts zu x = 2. Sortiere die Daten zuerst nach x, zum Beispiel mit df.sort_values("x").

Stilargumente: color (ein Name wie "black" oder "tab:orange" oder ein Hexadezimalcode wie "#1f77b4"), linestyle ("-" durchgezogen, "--" gestrichelt, ":" gepunktet, "-." strichpunktiert), linewidth, marker ("o" Kreis, "s" Quadrat, "^" Dreieck) und markersize. Eine kurze Formatzeichenkette kombiniert Marker und Linienstil: ax.plot(x, y, "o--") zeichnet Kreise, die durch eine gestrichelte Linie verbunden sind. Ohne color erhält jede neue Linie die nächste Farbe aus der Standardfolge, die mit "tab:blue" und "tab:orange" beginnt.

Gib jeder Linie ein label und rufe ax.legend() auf, um eine Legende anzuzeigen:

ax.plot(months, north, marker="o", label="North")
ax.plot(months, coast, linestyle="--", label="Coast")
ax.legend()

. Hat kein Artist eine Beschriftung, zeichnet ax.legend() nichts und Matplotlib warnt, dass keine Artists mit Beschriftungen gefunden wurden.

ax.scatter(x, y) zeichnet für jede Beobachtung einen nicht verbundenen Marker und eignet sich für den Zusammenhang zwischen zwei numerischen Variablen. Beispiel: Tagestemperatur [12, 15, 18, 21, 24, 27, 30, 22] °C und Fahrradverleihzahlen [180, 220, 260, 310, 330, 360, 340, 250]; ax.scatter(temp_c, rentals) zeigt, dass die Verleihzahlen mit der Temperatur meist steigen, und die Korrelation der beiden Listen beträgt etwa 0,92.

In ax.scatter legt s die Fläche jedes Markers in Quadratpunkt fest; der Standardwert ist 36, die Fläche eines 6 Punkt breiten Markers. Eine Verdopplung von s verdoppelt die Fläche, sodass die Breite des Markers nur um den Faktor etwa 1,4 wächst. s kann eine einzelne Zahl oder einen Wert pro Punkt enthalten, sodass die Markergröße eine dritte Variable darstellen kann.

c färbt die Punkte: entweder mit einer Farbe für alle oder anhand einer Zahl pro Punkt, die einer Farbskala wie cmap="viridis" zugeordnet wird. Bewahre das zurückgegebene Objekt auf und füge eine Farbleiste hinzu: sc = ax.scatter(temp_c, rentals, c=rain_mm, cmap="viridis"); fig.colorbar(sc, ax=ax, label="Rain (mm)").

Wenn sich viele Punkte überlagern, werden dichte Bereiche zu einfarbigen Flecken und verdecken, wie viele Punkte sie enthalten. Verringere die Deckkraft mit alpha=0.3, verwende kleinere Marker oder zeige stattdessen die Dichte, zum Beispiel mit einem Diagramm aus sechseckigen Klassen (df.plot.hexbin) oder einem zweidimensionalen Histogramm.

ax.plot(x, y, "o") zeichnet mit einem Marker und ohne Linie ebenfalls Punkte. Bei sehr vielen Punkten ist es schneller, weil alle Marker dieselbe Größe und Farbe haben. Verwende ax.scatter, wenn Größe oder Farbe von Punkt zu Punkt variieren sollen.

Wichtige Erkenntnisse

  • Linien verbinden Punkte in der angegebenen Reihenfolge.
  • Die Markergröße im Streudiagramm ist eine Fläche in Quadratpunkt.
  • Eine numerische Farbzuordnung benötigt eine Farbleiste.
  • Verwende Beschriftungen und eine Legende, um Datenreihen zu unterscheiden.
  • Transparenz hilft, überlagerte Beobachtungen sichtbar zu machen.

1.3 Kategorien mit Balkendiagrammen vergleichen

ax.bar(categories, heights) zeichnet einen vertikalen Balken pro Kategorie; ax.barh(categories, widths) zeichnet horizontale Balken, die Platz für lange Kategorienamen lassen. Sind die Kategorien Zeichenketten, platziert Matplotlib sie in der angegebenen Reihenfolge in gleichen Abständen und verwendet sie als Teilstrichbeschriftungen. Sind sie Zahlen, stehen die Balken an diesen numerischen Positionen auf einer gewöhnlichen numerischen Achse.

Balken beginnen standardmäßig an einer Basislinie bei 0, sodass ihre Länge ihren Wert zeigt. Das Argument width wird in Einheiten der x-Achse gemessen und beträgt standardmäßig 0,8. Kategorien als Zeichenketten werden im Abstand von einer Einheit platziert. Daher lässt die Standardeinstellung eine Lücke von 0,2 zwischen den Balken; bei width=1 berühren sich benachbarte Balken.

200 Pendler wurden gefragt, wie sie üblicherweise reisen: Auto 84, Bus 52, Fahrrad 38, zu Fuß 26. ax.barh(["Car", "Bus", "Bike", "Walk"], [84, 52, 38, 26]) zeichnet vier horizontale Balken. Die Anteile betragen 42 %, 26 %, 19 % und 13 % und ergeben zusammen 100 %.

ax.barh setzt die erste Kategorie an das untere Ende der Achse, weil die y-Achse nach oben wächst. Um eine Rangliste wie im Pendelbeispiel von oben zu lesen, rufe ax.invert_yaxis() auf oder kehre vor dem Zeichnen sowohl die Kategorien als auch ihre Werte um, sodass jeder Wert bei seiner Kategorie bleibt.

Gruppierte Balken stellen mehrere Datenreihen innerhalb jeder Kategorie nebeneinander. Verwende numerische Positionen und verschiebe jede Reihe um eine halbe Balkenbreite:

x = np.arange(3)
ax.bar(x - 0.2, north, width=0.4, label="North")
ax.bar(x + 0.2, coast, width=0.4, label="Coast")
ax.set_xticks(x, labels=["Jan", "Feb", "Mar"])
ax.legend()

. Die Balken für North stehen bei −0,2, 0,8 und 1,8, die für Coast bei 0,2, 1,2 und 2,2, jeweils mittig um den Teilstrich.

Gestapelte Balken zeichnen mit bottom= eine zweite Datenreihe auf die erste: ax.bar(days, car); ax.bar(days, bus, bottom=car). Gibt es an einem Tag 40 Autofahrten und 25 Busfahrten, reicht das Bussegment von 40 bis 65 und der gesamte Balken ist 65 hoch.

bars = ax.bar(...) gibt einen Container mit Balken zurück; ax.bar_label(bars) schreibt jeden Wert an das Ende seines Balkens. fmt steuert den Text: fmt="%.1f" gibt 3,14 als „3.1“ aus und fmt="{:.0f} km" als „3 km“.

Matplotlib zeichnet Balken in der Reihenfolge der Daten, nicht nach Größe. Sortiere für ein nach Rangfolge geordnetes Diagramm zuerst die Werte, zum Beispiel mit sorted() auf Paaren oder sort_values() in pandas. Das Argument yerr= ergänzt jeden Balken um einen Fehlerbalken vorgegebener Länge; ax.errorbar(x, y, yerr=...) tut dasselbe für Punkte.

Ein Balkendiagramm vergleicht Werte getrennter Kategorien, daher stehen seine Balken mit Lücken nebeneinander. Ein Histogramm zeigt dagegen, wie eine numerische Variable über benachbarte Intervalle verteilt ist; seine Balken berühren sich. Werden Messwerte mit einem Balken pro Datenzeile dargestellt, entsteht ein Balkendiagramm der Rohwerte, kein Histogramm.

Wichtige Erkenntnisse

  • Achte beim Sortieren darauf, dass Kategorien und ihre Werte zusammenbleiben.
  • Gruppierte Balken werden um die Teilstriche der Kategorien versetzt.
  • Gestapelte Balken verwenden kumulierte Anfangswerte.
  • Balkenbeschriftungen beziehen sich auf den zurückgegebenen Container.

1.4 Ein Diagramm beschriften, skalieren und gestalten

Setze Texte mit ax.set_title("..."), ax.set_xlabel("...") und ax.set_ylabel("...") oder mit einem einzigen Aufruf: ax.set(title="Monthly rainfall", xlabel="Month", ylabel="Rainfall (mm)"). Nenne die Einheit in der Achsenbeschriftung, zum Beispiel „Niederschlag (mm)“ oder „Entfernung (km)“, damit jeder Teilstrichwert eine Bedeutung hat.

Matplotlib wählt die Achsengrenzen anhand der Daten und fügt einen kleinen Rand hinzu. Lege sie selbst mit ax.set_xlim(1, 12) und ax.set_ylim(0, 120) fest oder bestimme nur ein Ende mit ax.set_ylim(bottom=0). ax.set(xlim=(1, 12), ylim=(0, 120)) erledigt dasselbe mit einem Aufruf.

ax.set_xticks([1, 4, 7, 10]) wählt die Positionen der Teilstriche; ax.set_xticks([1, 2, 3], labels=["Jan", "Feb", "Mar"]) ersetzt zusätzlich ihre Beschriftungen. Drehe dicht stehende Beschriftungen mit ax.tick_params(axis="x", labelrotation=45). Formatierer für Teilstrichbeschriftungen ändern die Schreibweise der Werte: ax.yaxis.set_major_formatter(PercentFormatter(xmax=1, decimals=0)) beschriftet den Wert 0,25 mit „25%“. Dabei wird PercentFormatter aus matplotlib.ticker importiert.

ax.set_yscale("log") stellt die y-Achse auf eine logarithmische Skala ein, auf der gleiche Abstände gleiche Verhältnisse darstellen: Der Schritt von 10 zu 100 ist genauso lang wie der Schritt von 100 zu 1.000. Das eignet sich für Werte über mehrere Größenordnungen, etwa Einwohnerzahlen von Städten. Eine logarithmische Achse kann weder null noch negative Werte darstellen.

ax.legend() platziert die Legende dort, wo sie die wenigsten Punkte verdeckt (loc="best", die Standardeinstellung für eine Axes-Legende). Wähle mit loc="upper left" eine Position, ergänze mit title="Station" eine Überschrift und verteile die Einträge mit ncols=2 auf Spalten. ax.legend(bbox_to_anchor=(1.02, 1), loc="upper left") setzt die Legende knapp außerhalb des rechten Rands des Zeichenbereichs.

ax.grid(True, alpha=0.3) ergänzt helle Gitternetzlinien an den Teilstrichen; ax.grid(axis="y") zeichnet nur horizontale Linien, was das Ablesen von Balkenhöhen erleichtert.

Stilvorlagen ändern das standardmäßige Aussehen aller folgenden Diagramme: plt.style.use("ggplot"). plt.style.available listet die installierten Stile auf; die mit Matplotlib gelieferten Stile nach dem Vorbild von seaborn heißen zum Beispiel "seaborn-v0_8-whitegrid". Um einen Stil nur auf einen Codeblock anzuwenden, verwende with plt.style.context("ggplot"):.

Einzelne Standardeinstellungen stehen in plt.rcParams, zum Beispiel plt.rcParams["font.size"] = 12 oder plt.rcParams["figure.figsize"] = (8, 4). Sie gelten für danach erstellte Figures; plt.rcdefaults() stellt die Standardeinstellungen von Matplotlib wieder her.

fig, ax = plt.subplots(figsize=(8, 4))
ax.plot([1, 2, 3, 4], [62, 48, 55, 40], marker="o", label="North")
ax.set(title="Monthly rainfall, January to April", xlabel="Month", ylabel="Rainfall (mm)", ylim=(0, 70))
ax.set_xticks([1, 2, 3, 4], labels=["Jan", "Feb", "Mar", "Apr"])
ax.legend()
ax.grid(axis="y", alpha=0.3)

.

In einer Figure mit mehreren Axes-Objekten ändern pyplot-Funktionen wie plt.title oder plt.xlabel nur das aktuelle Axes, meist das zuletzt erstellte. Dadurch kann ein Titel auf der falschen Teilgrafik landen. Methodenaufrufe auf dem gewünschten Axes, etwa axes[0].set_title(...), vermeiden das.

Wichtige Erkenntnisse

  • Die Teilstrichformatierung ändert Beschriftungen, ohne die Werte zu ändern.
  • Logarithmische Skalen zeigen gleiche Verhältnisse als gleiche Abstände.
  • Stile und rcParams legen Standardeinstellungen für spätere Diagramme fest.
2

Daten direkt aus pandas grafisch darstellen

Eine pandas-Tabelle enthält oft bereits die Beschriftungen und Werte, die ein Diagramm benötigt. Ihre Darstellungsmethoden verwenden diese Beschriftungen, um ein Matplotlib-Diagramm zu erstellen, das du anschließend mit denselben Methoden wie ein selbst erstelltes Diagramm fertig gestalten kannst. Die wichtige Arbeit findet oft vor dem Zeichnen statt: Du entscheidest, was eine Zeile darstellt, berechnest die passende Zusammenfassung und ordnest die Tabelle so an, dass Gruppen, Datenreihen und ihre Reihenfolge zur Fragestellung passen.

2.1 Die plot-Methode von pandas nutzen

Erstelle die Niederschlagstabelle im Breitformat mit einer Spalte pro Station:

import pandas as pd
wide = pd.DataFrame({
    "North": [62, 48, 55, 40],
    "Coast": [110, 95, 80, 60],
    "Valley": [20, 15, 30, 45]
}, index=pd.Index(["Jan", "Feb", "Mar", "Apr"], name="month"))

Jede pandas-Series und jeder DataFrame hat eine .plot-Methode, die mit Matplotlib zeichnet und das Matplotlib-Axes zurückgibt, auf dem sie gezeichnet hat. df.plot(kind="bar") und df.plot.bar() sind derselbe Aufruf. Die Typen sind "line" (Standard), "bar", "barh", "hist", "box", "kde" oder "density", "area", "pie", "scatter" und "hexbin".

Standardmäßig wird der Index zur x-Achse und jede numerische Spalte zu einer Linie; die Legende wird aus den Spaltennamen erstellt. Eine Series stellt ihre Werte gegen ihren Index dar. Um Spalten auszuwählen, übergib x="month" und y="rain_mm" oder eine Liste wie y=["North", "Coast"].

Eine Tabelle wide mit dem Index Jan, Feb, Mar, Apr und den Spalten North [62, 48, 55, 40], Coast [110, 95, 80, 60] und Valley [20, 15, 30, 45], alle Angaben in Millimetern Niederschlag. ax = wide.plot(marker="o", figsize=(8, 4), title="Monthly rainfall"); ax.set_ylabel("Rainfall (mm)") zeichnet drei beschriftete Linien in einem Axes und setzt anschließend die y-Achsenbeschriftung mit einer gewöhnlichen Matplotlib-Methode.

Häufige Argumente von .plot: title, xlabel, ylabel, xlim, ylim, figsize, color, legend=False, rot (Drehung der Teilstrichbeschriftungen in Grad), grid=True und logy=True. ax= zeichnet in ein vorhandenes Axes, zum Beispiel eine Teilgrafik von plt.subplots(1, 2), statt eine neue Figure zu erstellen.

subplots=True zeichnet jede Spalte in ein eigenes Axes und gibt statt eines einzelnen Axes ein NumPy-Array von Axes-Objekten zurück; layout=(2, 2) ordnet sie in einem Raster an und sharey=True gibt ihnen eine gemeinsame y-Skala. Für die Tabelle mit drei Stationen liefert wide.plot(subplots=True, layout=(1, 3), sharey=True) eine Teilgrafik pro Station.

Streu- und Hexbin-Diagramme gibt es nur für DataFrames; sie benötigen sowohl x als auch y: days.plot.scatter(x="temp_c", y="rentals", c="rain_mm", colormap="viridis") färbt die Punkte nach Niederschlag. Eine Series hat kein Streudiagramm, daher löst s.plot.scatter() einen Fehler aus. df.plot.hist(bins=5) und df.plot.box() liefern für jede numerische Spalte ein Histogramm beziehungsweise einen Boxplot.

s.plot.pie() zeichnet für jeden Wert ein Kreissegment, dessen Größe seinem Anteil an der Gesamtsumme entspricht. Da Kreisdiagramme eine Series mit nicht negativen Teilen eines Ganzen benötigen, ist eine Spalte mit Häufigkeiten wie s.value_counts() eine typische Eingabe.

Balkendiagramme in pandas behandeln den Index als Kategorien und platzieren die Balken unabhängig von den Indexwerten an den Positionen 0, 1, 2, …. Liniendiagramme verwenden die tatsächlichen Indexwerte, wenn diese Zahlen oder Datumsangaben sind. Eine Linie und Balken aus pandas liegen auf demselben Axes daher nur dann passend übereinander, wenn die x-Werte der Linie den Balkenpositionen entsprechen, wie beim Standardindex 0, 1, 2, …; bei Jahren wie 2020 bis 2023 liegt die Linie weit rechts von den Balken. Stelle beim Kombinieren beide anhand derselben Positionen dar.

Bei einem DatetimeIndex setzt .plot() Datumsangaben auf die x-Achse und beschriftet sie automatisch. Tagesdaten werden nach einem Resampling oft übersichtlicher, zum Beispiel zu Monatsmittelwerten mit s.resample("MS").mean().plot().

.plot stellt nur numerische Spalten dar. Wurden Zahlen als Text eingelesen, zum Beispiel weil eine Spalte „12 mm“ enthält, wird die Spalte übersprungen. Bleiben keine numerischen Daten übrig, löst pandas TypeError: no numeric data to plot aus. Wandle die Spalte zuerst um, zum Beispiel mit pd.to_numeric(...).

Wichtige Erkenntnisse

  • pandas stellt numerische Daten dar und verwendet standardmäßig den Index.
  • Übergib ein Axes mit ax=, um eine Teilgrafik wiederzuverwenden.
  • Separate Teilgrafiken geben ein Array von Axes-Objekten zurück.
  • Balken und numerische Linien verwenden in pandas unterschiedliche Positionsregeln.

2.2 Daten vor der grafischen Darstellung umformen

Ein Diagramm zeichnet die Werte, die in der Tabelle stehen. Fasse sie deshalb zuerst zusammen. Beispiel: eine Tabelle rain im Langformat mit 12 Zeilen, einer pro Station und Monat, und den Spalten month, station und rain_mm. rain.groupby("station")["rain_mm"].mean() liefert einen Mittelwert pro Station: Coast 86,25 mm, North 51,25 mm und Valley 27,5 mm. Ergänzt du .plot.bar(), werden drei Balken gezeichnet.

Wenn du versehentlich Rohdatenzeilen darstellst, erhältst du einzelne Messwerte statt der gewünschten Mittelwerte: rain.plot.bar(x="station", y="rain_mm") zeichnet 12 Balken mit wiederholten Stationsnamen statt drei Mittelwerten.

Sortiere vor dem Zeichnen, um die Balken nach Rangfolge anzuordnen: means.sort_values(ascending=False).plot.bar() setzt den größten Mittelwert nach links. Bei einem horizontalen Diagramm setzt means.sort_values().plot.barh() den größten Wert nach oben, weil der erste Wert unten gezeichnet wird.

s.value_counts() zählt, wie oft jede Kategorie vorkommt, und listet die Häufigkeiten absteigend auf. Für die Verkehrsmittel „Bus“, „Auto“, „Bus“, „Fahrrad“, „Bus“, „Auto“ ergibt das Bus 3, Auto 2, Fahrrad 1, bereit für .plot.bar(). Verwende .sort_index() oder .reindex([...]), wenn die Kategorien eine natürliche Reihenfolge haben, etwa Wochentage.

Ein DataFrame im Breitformat mit einer Spalte pro Datenreihe ergibt in pandas eine Linie beziehungsweise Balkenfarbe pro Spalte. Forme eine Tabelle im Langformat mit rain.pivot(index="month", columns="station", values="rain_mm") um. Kommt ein Paar aus Index- und Spaltenwert mehr als einmal vor, löst pivot einen Fehler aus; verwende stattdessen pivot_table(..., aggfunc="mean") oder groupby(["month", "station"])["rain_mm"].mean().unstack().

pivot und pivot_table sortieren den neuen Index. Monatsnamen als Zeichenketten erscheinen daher alphabetisch als Apr, Feb, Jan, Mar; ein Liniendiagramm durchläuft die Monate dann in der falschen Reihenfolge. Stelle die tatsächliche Reihenfolge mit wide.reindex(["Jan", "Feb", "Mar", "Apr"]) wieder her oder speichere den Monat vor dem Pivotieren als geordnete kategoriale Variable oder als Monatszahl.

Auf einer Tabelle im Breitformat zeichnet wide.plot.bar() gruppierte Balken, eine Gruppe pro Indexbezeichnung und eine Farbe pro Spalte, während wide.plot.bar(stacked=True) die Spalten stapelt. Die Transponierung wide.T.plot.bar() vertauscht die Rollen: eine Gruppe pro Station, eine Farbe pro Monat.

Für Anteile innerhalb jeder Gruppe normiere eine Kreuztabelle: pd.crosstab(trips["region"], trips["mode"], normalize="index") dividiert jede Häufigkeit durch die Zeilensumme, sodass sich jede Zeile zu 1 summiert. Hat Region N zwei Auto- und eine Busfahrt, enthält ihre Zeile Auto 0,67 und Bus 0,33 (gerundet). .plot.bar(stacked=True) zeichnet dann gleich hohe Balken, die die Zusammensetzung jeder Region zeigen.

seaborn arbeitet am besten mit Daten im Langformat: eine Zeile pro Beobachtung und eine Spalte pro Variable. wide.reset_index().melt(id_vars="month", var_name="station", value_name="rain_mm") wandelt die 4 × 3-Tabelle im Breitformat zurück in 12 Zeilen mit drei Spalten, sodass station für Farben oder Facetten verwendet werden kann.

Wichtige Erkenntnisse

  • Aggregiere Zeilen, bevor du die gewünschte Zusammenfassung darstellst.
  • Ein mehrfach vorkommendes Paar bei der Pivotierung benötigt eine Aggregationsregel.
  • Das Breitformat eignet sich für Datenreihen in Spalten, das Langformat für semantische Zuordnungen.
  • Stelle nach dem Umformen eine sinnvolle Kategorienreihenfolge wieder her.
  • Normiere jede Zeile, um Gruppenanteile zu vergleichen.
3

Statistische Diagramme mit seaborn erstellen

Statistische Diagramme verbinden Tabellenspalten mit visuellen Merkmalen und berechnen beim Zeichnen oft eine Zusammenfassung. seaborn übernimmt beides über benannte Argumente. Ein kurzer Aufruf kann Gruppen in unterschiedlichen Farben zeigen, wiederholte Beobachtungen mitteln oder eine Tabelle in Teilgrafiken aufteilen. Achte genau auf diese Standardeinstellungen: Ein Diagramm einzelner Beobachtungen und eines von Gruppenmittelwerten können auf denselben Zeilen beruhen, aber unterschiedliche Fragen beantworten.

3.1 Spalten in seaborn visuellen Merkmalen zuordnen

seaborn ist eine auf Matplotlib aufbauende Bibliothek für Diagramme, die direkt mit pandas-DataFrames arbeitet und gängige statistische Kennwerte selbst berechnet. Üblicherweise wird sie mit import seaborn as sns importiert. Ein typischer Aufruf nennt die Tabelle und ihre Spalten: sns.scatterplot(data=days, x="temp_c", y="rentals").

Neben x und y lassen sich Spalten weiteren Merkmalen zuordnen (semantische Zuordnungen): hue legt die Farbe fest, style den Marker oder das Strichmuster und size die Markergröße oder Linienbreite. seaborn wählt die Farben und erstellt die Legende selbst. Eine kategoriale hue-Spalte erhält unterschiedliche Farben, eine numerische einen Farbverlauf.

Für jede Zuordnung wird eine Spalte im Langformat benötigt. Mit der Niederschlagstabelle im Langformat zeichnet sns.lineplot(data=rain, x="month", y="rain_mm", hue="station", marker="o") eine farbige Linie pro Station mit Legende. Nennt hue eine Spalte, die nicht in der Tabelle steht, löst seaborn einen ValueError aus, der besagt, dass der Wert nicht interpretiert werden konnte.

Enthält x Zeichenketten, platziert seaborn die Kategorien in der Reihenfolge, in der sie erstmals in den Daten erscheinen. Monatsnamen, die in dieser Zeilenreihenfolge als „Jan“, „Feb“, „Mar“ gespeichert sind, bleiben daher in Kalenderreihenfolge. Die Funktionen für kategoriale Daten wie barplot, boxplot und countplot akzeptieren order=["Mon", "Tue", "Wed"], um die Kategorienreihenfolge festzulegen; hue_order legt die Reihenfolge der Farbgruppen in jeder Funktion mit hue fest. lineplot hat kein Argument order: Um dort die Reihenfolge der Monatsnamen festzulegen, mache die x-Spalte zu einer geordneten kategorialen Variablen, zum Beispiel mit pd.Categorical(rain["month"], categories=["Jan", "Feb", "Mar", "Apr"], ordered=True).

Funktionen auf Axes-Ebene wie scatterplot, lineplot, histplot, boxplot, barplot und heatmap zeichnen in ein Matplotlib-Axes, akzeptieren ax= zur Auswahl dieses Axes und geben es zurück. Funktionen auf Figure-Ebene, relplot, displot, catplot und lmplot, erstellen eine eigene Figure, können sie mit col und row in Teilgrafiken aufteilen und geben ein seaborn-Objekt vom Typ FacetGrid zurück.

Bei Funktionen auf Figure-Ebene wird die Größe pro Teilgrafik festgelegt: height ist die Höhe jeder Teilgrafik in Zoll und aspect ihr Verhältnis von Breite zu Höhe, sodass jede Teilgrafik height × aspect Zoll breit ist; die Standardwerte sind 5 und 1. Da diese Funktionen eine eigene Figure erstellen, können sie nicht in ein vorhandenes Axes zeichnen: relplot, displot und catplot warnen und ignorieren ax=, während lmplot es mit einem TypeError ablehnt. Sie platzieren die Legende außerhalb der Teilgrafiken.

sns.set_theme() stellt alle folgenden Diagramme, auch reine Matplotlib-Diagramme, auf das Erscheinungsbild von seaborn um: den Stil „darkgrid“, den Kontext „notebook“ und die Standardpalette von seaborn. style kann „darkgrid“, „whitegrid“, „dark“, „white“ oder „ticks“ sein; context kann „paper“, „notebook“, „talk“ oder „poster“ sein und skaliert Schriften und Linien, zum Beispiel von einer Grundschriftgröße von 12 Punkt für „notebook“ auf 18 Punkt für „talk“.

palette wählt die Farben für hue, zum Beispiel palette="colorblind", "Set2" oder "viridis". In seaborn 0.13 gilt die Übergabe von palette ohne hue als veraltet; um Balken nach Kategorie zu färben, setze hue auf dieselbe Spalte wie x und ergänze legend=False: sns.barplot(data=rain, x="station", y="rain_mm", hue="station", legend=False).

Das Ergebnis lässt sich mit Matplotlib fertig gestalten:

ax = sns.scatterplot(...)
ax.set(xlabel="Temperature (°C)", ylabel="Rentals per day", title="Rentals and temperature")

. Verwende für ein Ergebnis auf Figure-Ebene die Methoden des Rasters, etwa g.set_axis_labels("Temperature (°C)", "Rentals per day"), und g.figure.suptitle("...") für einen Gesamttitel.

Wichtige Erkenntnisse

  • Semantische Zuordnungen verbinden Spalten mit visuellen Merkmalen.
  • Funktionen auf Axes-Ebene akzeptieren ein vorhandenes Axes.
  • Funktionen auf Figure-Ebene erstellen eigene Teilgrafiken und legen deren Größe fest.
  • Gestaltungsschemata wirken sich auf spätere Diagramme beider Bibliotheken aus.

3.2 Zusammenhänge zwischen numerischen Variablen darstellen

sns.scatterplot(data=days, x="temp_c", y="rentals", hue="weekday", size="rain_mm") zeichnet einen Punkt pro Zeile, dessen Farbe und Größe durch weitere Spalten bestimmt werden. Kombinierst du hue und style mit derselben Spalte, erhält jede Gruppe eine eigene Farbe und einen eigenen Marker, sodass sie auch in Graustufen unterscheidbar bleibt.

sns.lineplot aggregiert standardmäßig: Haben mehrere Zeilen denselben x-Wert, zeichnet die Funktion die Linie durch das arithmetische Mittel ihrer y-Werte und schattiert ein Band für das 95-%-Konfidenzintervall dieses Mittelwerts, das durch Bootstrapping berechnet wird. Durchgerechnetes Beispiel: Bei x = 1 sind die y-Werte 10, 12 und 14, bei x = 2 sind sie 20, 21 und 25; die Linie verläuft durch 12 und 22.

Das Standardband zeigt die Unsicherheit jedes Mittelwerts, nicht die Spannweite der Daten. errorbar="sd" schattiert stattdessen den Bereich einer Standardabweichung oberhalb und unterhalb des Mittelwerts, errorbar=None entfernt das Band und estimator=None zeichnet zusammen mit units= jede einzelne Datenreihe ohne Mittelwertbildung. Bei einer Zeile pro x-Wert gibt es nichts zu mitteln und kein Band.

sns.regplot(data=days, x="temp_c", y="rentals") zeichnet ein Streudiagramm mit einer nach der Methode der kleinsten Quadrate angepassten Geraden und einem schattierten 95-%-Konfidenzband für diese Gerade; order=2 passt stattdessen eine quadratische Kurve an. sns.lmplot tut dasselbe als Funktion auf Figure-Ebene und kann die Daten daher zusätzlich nach hue, col oder row aufteilen.

Eine angepasste Linie fasst die Daten anhand des gewählten Modells zusammen. Auch durch gekrümmte Daten lässt sich eine Gerade zeichnen. Betrachte deshalb die Punkte um die Linie, bevor du ihr vertraust. Ein starker Trend zeigt, dass die Variablen in diesen Daten zusammenhängen, ohne eine Ursache nachzuweisen.

sns.pairplot(df) zeichnet ein Raster mit einem Streudiagramm für jedes Paar numerischer Spalten und der Verteilung jeder Spalte auf der Diagonale: standardmäßig Histogramme, bei gesetztem hue Dichtekurven. Vier numerische Spalten ergeben ein 4 × 4-Raster mit 16 Teilgrafiken. corner=True behält nur das untere Dreieck und vars=[...] begrenzt die Spaltenauswahl. Die Funktion gibt ein PairGrid zurück.

sns.jointplot(data=days, x="temp_c", y="rentals") zeichnet ein Streudiagramm mit dem Histogramm jeder Variablen an den Rändern; kind="hex" ersetzt die Punkte durch sechseckige Klassen, was bei großen Datensätzen hilft.

sns.relplot(..., kind="scatter") und sns.relplot(..., kind="line") sind die Varianten von scatterplot und lineplot auf Figure-Ebene; das Streudiagramm ist der Standardtyp. Verwende sie, wenn derselbe Zusammenhang für jede Gruppe in einer eigenen Teilgrafik gezeigt werden soll.

sns.regplot(data=days, x="temp_c", y="rentals") zeigt einen Anstieg der Verleihzahlen von 180 bei 12 °C auf etwa 350 an den wärmsten Tagen, bei einer Korrelation von etwa 0,92. Am Tag mit 30 °C gibt es weniger Ausleihen (340) als am Tag mit 27 °C (360), sodass die Punkte oben abflachen; eine quadratische Anpassung (order=2) kann mit der Geraden verglichen werden.

Wichtige Erkenntnisse

  • Linien in seaborn mitteln standardmäßig wiederholte Beobachtungen.
  • Ein Konfidenzband beschreibt die Unsicherheit einer Schätzung.
  • Verwende units und verzichte auf eine Schätzfunktion, um einzelne Verläufe zu erhalten.
  • Untersuche sowohl die Punkte als auch die angepassten Linien.
  • Pairplots vergleichen Variablen und ihre Verteilungen.

3.3 Gruppen mit Diagrammen für kategoriale Daten vergleichen

Die Funktionen von seaborn für kategoriale Daten platzieren jede Kategorie an den Positionen 0, 1, 2, … auf der kategorialen Achse. Auch Zahlen werden als Bezeichnungen behandelt: Die Jahre 2020, 2021 und 2023 werden in gleichen Abständen gezeichnet, ohne Lücke für 2022. native_scale=True behält eine numerische Achse mit den tatsächlichen Abständen bei.

sns.barplot(data=rain, x="station", y="rain_mm") zeichnet einen Balken pro Station, dessen Höhe das arithmetische Mittel ihrer Zeilen ist, mit einem Fehlerbalken für das 95-%-Konfidenzintervall dieses Mittelwerts. Bei der Niederschlagstabelle betragen die Balkenhöhen für Coast 86,25, North 51,25 und Valley 27,5 mm. estimator="median" oder estimator="sum" ändert den zusammenfassenden Kennwert; errorbar="sd" ändert die Fehlerbalken und errorbar=None entfernt sie.

sns.countplot(data=trips, x="mode") zählt die Zeilen in jeder Kategorie und benötigt keine numerische Spalte; sns.barplot fasst eine numerische Spalte zusammen. Verwende countplot für „wie viele“ und barplot für „wie viel im Durchschnitt“.

sns.pointplot zeigt den Mittelwert jeder Gruppe als Punkt mit Fehlerbalken und verbindet die Punkte jeder hue-Gruppe mit einer Linie. So lassen sich Änderungen über Kategorien hinweg leicht vergleichen, zum Beispiel der mittlere Niederschlag von drei Stationen in jedem von vier Monaten.

Ein Balken für einen Mittelwert verdeckt die Streuung und die Anzahl der Beobachtungen: Ein Mittelwert aus 3 Zeilen wirkt genauso solide wie einer aus 300. Häufig ist es besser, die Daten zu zeigen: sns.stripplot zeichnet jede Beobachtung als Punkt mit einer kleinen zufälligen Verschiebung, und sns.swarmplot ordnet die Punkte so an, dass sie sich nicht überlagern. Ein Streifendiagramm kann auf demselben Axes über einem Boxplot oder Balkendiagramm gezeichnet werden.

Mit hue platzieren Balkendiagramme, Boxplots und Violinplots die Gruppen standardmäßig innerhalb jeder Kategorie nebeneinander. Punkt-, Streifen- und Schwarmdiagramme zeichnen die Gruppen an derselben Position, sofern nicht dodge=True gesetzt ist, sodass sich ihre Punkte überlagern können. Lege die Kategorienreihenfolge mit order=[...] und die Gruppenreihenfolge mit hue_order=[...] fest.

Die Ausrichtung folgt den Daten: Setze die Kategorien auf die y-Achse und die Zahlen auf die x-Achse, sns.barplot(data=rain, x="rain_mm", y="station"), um horizontale Balken mit lesbaren langen Beschriftungen zu erhalten. orient="y" (oder "h") legt dies ausdrücklich fest.

sns.catplot ist die Funktion auf Figure-Ebene für alle Diagramme für kategoriale Daten. Ihr kind kann „strip“ (Standard), „swarm“, „box“, „violin“, „boxen“, „point“, „bar“ oder „count“ sein; col oder row teilt das Diagramm in Teilgrafiken auf.

Wichtige Erkenntnisse

  • Häufigkeitsdiagramme zählen Zeilen; Balkendiagramme fassen numerische Werte zusammen.
  • Streifen- und Schwarmdiagramme zeigen einzelne Beobachtungen.
  • Seitliches Versetzen trennt Farbgruppen innerhalb einer Kategorie.
4

Verteilungen und Wertematrizen visualisieren

Ein Verteilungsdiagramm beschreibt eine Reihe von Messwerten, während eine Heatmap eine Tabelle mithilfe von Farben darstellt. Diese Diagramme verdichten viele Werte, daher beeinflussen ihre Einstellungen, was du ablesen kannst. Klassengrenzen bestimmen, welche Beobachtungen zusammengezählt werden; Quartile und Whisker fassen unterschiedliche Teile einer Stichprobe zusammen; eine Farbskala ordnet Zahlen Farbtönen zu. Gehe diese Berechnungen durch, bevor du das fertige Bild interpretierst.

4.1 Eine Verteilung mit Histogrammen und Dichtekurven darstellen

Ein Histogramm teilt die Spannweite einer numerischen Variablen in benachbarte Intervalle, sogenannte Klassen, und zeichnet über jeder Klasse einen Balken, dessen Höhe der Anzahl der Beobachtungen darin entspricht. Es zeigt die Form einer Verteilung: wo die Werte liegen, wie stark sie streuen, ob die Verteilung schief ist und ob es Lücken oder ungewöhnliche Werte gibt.

counts, edges, patches = ax.hist(data, bins=5) zeichnet das Histogramm und gibt die Anzahl in jeder Klasse sowie die Klassengrenzen zurück. Bei einer Ganzzahl als Angabe sind die Klassen vom Minimum bis zum Maximum gleich breit; standardmäßig gibt es 10 Klassen. Jede Klasse schließt ihre linke Grenze ein und ihre rechte aus, außer der letzten Klasse, die beide einschließt.

20 Pendelzeiten in Minuten: 12, 15, 18, 20, 22, 22, 25, 27, 28, 30, 31, 33, 35, 38, 40, 42, 45, 50, 55, 62. Bei bins=5 sind die Grenzen 12, 22, 32, 42, 52 und 62 und die Häufigkeiten 4, 7, 4, 3 und 2. Der Wert 22 fällt in die zweite Klasse, weil Klassen ihre rechte Grenze ausschließen; 62 zählt zur letzten Klasse, weil diese ihn einschließt.

Anzahl und Position der Klassen verändern das Bild. Dieselben 20 Zeiten ergeben mit den Grenzen [10, 20, 30, 40, 50, 60, 70] die Häufigkeiten 3, 6, 5, 3, 2 und 1. Zu wenige Klassen verdecken die Form; zu viele ergeben ein gezacktes Diagramm mit vielen fast leeren Klassen. Probiere mehrere Einstellungen aus und bevorzuge runde Klassengrenzen, die Leser deuten können, etwa Schritte von 10 Minuten.

density=True in Matplotlib oder stat="density" in seaborn skaliert die Balken so, dass ihre Gesamtfläche 1 beträgt: Jede Höhe ist Häufigkeit ÷ (n × Klassenbreite). Bei den Pendeldaten mit fünf Klassen von je 10 Minuten beträgt die Höhe des zweiten Balkens 7 ÷ (20 × 10) = 0,035 pro Minute. Eine Dichtehöhe ist keine Wahrscheinlichkeit; Höhe × Klassenbreite ist der Anteil der Beobachtungen in der Klasse.

sns.histplot(data=commutes, x="minutes") zeichnet ein Histogramm mit seaborn; bins und binwidth steuern die Klassen. stat wählt die Höhe: „count“ (Standard), „probability“ oder „proportion“ (die Höhen summieren sich zu 1), „percent“ (die Höhen summieren sich zu 100) und „density“ (Fläche 1). Für die fünf Pendelzeitklassen ergibt „probability“ 0,2, 0,35, 0,2, 0,15 und 0,1.

Zum Vergleich von Gruppen legt sns.histplot(data=commutes, x="minutes", hue="mode") je ein Histogramm pro Gruppe übereinander; multiple="stack" stapelt sie, multiple="dodge" stellt sie nebeneinander und element="step" zeichnet Umrisse, die sich bei Überlagerung besser lesen lassen. Gruppen unterschiedlicher Größe lassen sich mit stat="density", common_norm=False angemessen vergleichen; dadurch wird jede Gruppe auf eine Fläche von 1 skaliert.

Eine Kerndichteschätzung (KDE) ist eine glatte Kurve, die die Form der Verteilung schätzt; die Fläche darunter beträgt 1. sns.kdeplot(data=commutes, x="minutes") zeichnet sie und sns.histplot(..., kde=True) ergänzt sie in einem Histogramm. Ein bw_adjust über 1 macht die Kurve glatter, ein Wert unter 1 detailreicher.

Eine KDE-Kurve reicht über den kleinsten und größten Wert hinaus. Daher kann sie für Zeiten, die nicht negativ sein können, eine Dichte unter 0 Minuten zeigen. cut=0 begrenzt die Kurve auf den Wertebereich der Daten. Bei kleinen Stichproben kann die Kurve eine Form nahelegen, die die Daten nicht stützen.

In pandas zeichnet commutes["minutes"].plot.hist(bins=5, edgecolor="white") ein Histogramm (standardmäßig 10 Klassen) und df.hist() zeichnet für jede numerische Spalte ein Histogramm in einem Raster. In seaborn ist sns.displot die Variante auf Figure-Ebene: kind="hist" (Standard), kind="kde" oder kind="ecdf". Eine empirische Verteilungsfunktion (ECDF) zeigt für jeden Wert den Anteil der Beobachtungen, die höchstens diesen Wert haben.

Wichtige Erkenntnisse

  • Klassengrenzen bestimmen die Klassenzugehörigkeit im Histogramm.
  • Bei der Dichte stellt die Fläche einen Anteil dar.
  • Eine KDE glättet eine Verteilung und hängt von der Bandbreite ab.
  • Normiere Gruppen unabhängig voneinander, um ihre Formen zu vergleichen.

4.2 Verteilungen mit Boxplots zusammenfassen und vergleichen

Ein Boxplot fasst eine Verteilung zusammen: Die Box reicht vom ersten Quartil (Q1) bis zum dritten Quartil (Q3), eine Linie darin markiert den Median, Whisker reichen zu den kleinsten und größten typischen Werten und Punkte jenseits der Whisker werden einzeln als mögliche Ausreißer dargestellt. Der Interquartilsabstand IQR = Q3 − Q1 ist die Länge der Box und umfasst die mittlere Hälfte der Daten.

Standardmäßig verwenden Matplotlib, pandas und seaborn whis=1.5: Die Ausreißergrenzen sind Q1 − 1,5 × IQR und Q3 + 1,5 × IQR. Jeder Whisker endet beim äußersten Datenwert innerhalb seiner Ausreißergrenze, nicht an der Grenze selbst. Jeder Wert außerhalb der Ausreißergrenzen wird als eigener Punkt gezeichnet.

11 Lieferzeiten in Minuten: 14, 16, 17, 18, 19, 20, 21, 22, 24, 25, 41. Matplotlib berechnet Q1 = 17,5, Median = 20 und Q3 = 23, also IQR = 5,5. Die Ausreißergrenzen sind 17,5 − 8,25 = 9,25 und 23 + 8,25 = 31,25. Der untere Whisker endet bei 14, der obere bei 25 und 41 wird als Ausreißerpunkt gezeichnet.

Quartile hängen von der Methode ab. Die Grafikbibliotheken verwenden lineare Interpolation zwischen sortierten Werten, die Standardeinstellung von NumPy und pandas. Sie ergibt oben 17,5 und 23. Bei der Rechnung von Hand mit den Medianen der unteren und oberen Hälfte ohne den Gesamtmedian ergeben sich für dieselben Daten Q1 = 17 und Q3 = 24. Beide Methoden sind gültig; daher können kleine Unterschiede zwischen einer Rechnung von Hand und einem Diagramm entstehen.

Zeichne die Zusammenfassung mit der Bibliothek, die du verwendest: ax.boxplot([north, coast], tick_labels=["North", "Coast"]) in Matplotlib (vor Version 3.9 hieß das Argument labels); rain.boxplot(column="rain_mm", by="station") in pandas, wobei auch der Gesamttitel „Boxplot grouped by station“ hinzugefügt wird; sns.boxplot(data=rain, x="station", y="rain_mm") in seaborn, mit hue für eine zweite Gruppierung. whis=(0, 100) zeichnet die Whisker bis zum Minimum und Maximum, und showfliers=False blendet die Ausreißerpunkte aus.

Nebeneinanderstehende Boxplots erlauben einen Gruppenvergleich auf einen Blick: Vergleiche die Mediane, die Boxlängen (Streuung der mittleren Hälfte) und die Überlappung der Boxen. Ein Median nahe einem Ende der Box oder ein Whisker, der deutlich länger als der andere ist, deutet auf eine schiefe Verteilung hin.

Eine Box zeigt nur fünf Zahlen und die Ausreißer. Sie zeigt nicht die Anzahl der Beobachtungen, und sehr unterschiedliche Verteilungsformen können dieselbe Box haben: Eine Verteilung mit zwei getrennten Gipfeln und eine mit einem einzigen Gipfel können dieselben Werte für Q1, Median und Q3 haben. Zeichnest du die Punkte darüber, sns.stripplot(data=rain, x="station", y="rain_mm", color="black", alpha=0.5), oder verwendest du einen Violinplot, wird dies sichtbar.

sns.violinplot(data=rain, x="station", y="rain_mm") zeichnet für jede Gruppe eine gespiegelte Dichtekurve mit einem kleinen Boxplot darin (inner="box", die Standardeinstellung); inner="quart" markiert stattdessen die Quartile durch Linien. Bei einem hue mit zwei Ausprägungen setzt split=True je eine Gruppe auf eine Seite der Violine. Wie eine KDE kann die Violine über die Daten hinausreichen; cut=0 begrenzt sie auf das beobachtete Minimum und Maximum.

Ein Punkt, der durch die 1,5 × IQR-Regel als Ausreißer markiert wird, ist im Vergleich zu den übrigen Daten ungewöhnlich. Das ist ein Grund, den Wert zu untersuchen. Prüfe ihn: Es kann sich um einen Eingabefehler oder einen echten, wichtigen Wert handeln, etwa eine durch eine Straßensperrung verzögerte Lieferung. Punkte nur deshalb zu entfernen, weil das Diagramm sie markiert, verzerrt die Analyse.

Wichtige Erkenntnisse

  • Die Boxlänge entspricht dem IQR.
  • Whisker enden bei Beobachtungen innerhalb der Ausreißergrenzen.
  • Methoden zur Quartilsberechnung können sich unterscheiden.
  • Ausgeblendete Ausreißerpunkte bleiben in den zugrunde liegenden Daten erhalten.
  • Punkte und Violinplots zeigen Informationen, die eine Box verdeckt.

4.3 Eine Wertematrix als Heatmap darstellen

Eine Heatmap zeigt eine Zahlentabelle als Raster farbiger Zellen: Zeilen und Spalten stehen für zwei Kategorien oder in Klassen eingeteilte Variablen, und die Farbe jeder Zelle steht für ihren Wert. Sie eignet sich für Muster in zweidimensionalen Tabellen, etwa Besucherzahlen nach Wochentag und Tageszeit, sowie für Korrelationsmatrizen.

sns.heatmap(table) nimmt eine Tabelle im Breitformat, verwendet deren Index als Zeilenbeschriftungen und deren Spalten als Spaltenbeschriftungen und ergänzt eine Farbleiste als Schlüssel. Die Tabelle stammt meist aus pivot_table: visits.pivot_table(index="day", columns="slot", values="visitors", aggfunc="mean").

Ein Museum zählt Besucher pro Halbtag. Samstagvormittag 120 und 140, Samstagnachmittag 200; Sonntagvormittag 90, Sonntagnachmittag 160; Montagvormittag 40, Montagnachmittag 70 und 90. Die Pivot-Tabelle der Mittelwerte enthält für Montag 40 und 80, Samstag 130 und 200, Sonntag 90 und 160, jeweils für Vormittag und Nachmittag. sns.heatmap(pt, annot=True, fmt=".0f", cmap="Blues") zeigt die Zelle mit den meisten Besuchern, den Samstagnachmittag, am dunkelsten. Die Pivotierung sortiert die Tage alphabetisch nach ihren englischen Kürzeln (Mon, Sat, Sun); pt.reindex(["Sat", "Sun", "Mon"]) würde eine gewählte Reihenfolge wiederherstellen.

annot=True schreibt jeden Wert in seine Zelle und fmt legt das Zahlenformat fest. Die Standardeinstellung ".2g" behält zwei signifikante Stellen, sodass 43,25 als „43“ und 1.234 als „1.2e+03“ angezeigt wird. Verwende fmt=".0f" für ganze Zahlen oder fmt=".2f" für zwei Nachkommastellen; fmt="d" funktioniert nur für ganzzahlige Daten und löst bei Gleitkommazahlen einen ValueError aus.

Eine Korrelations-Heatmap beginnt mit corr = df.corr(numeric_only=True), einer quadratischen, symmetrischen Tabelle, deren definierte Koeffizienten von −1 bis 1 reichen. Numerische Spalten, deren Werte nicht konstant sind, haben 1 auf der Diagonale; bei konstanten Spalten sind die Korrelationen nicht definiert. Ab pandas 2 ist numeric_only standardmäßig False, sodass df.corr() einen Fehler auslöst, wenn die Tabelle eine Textspalte enthält. Zeichne sie mit sns.heatmap(corr, annot=True, fmt=".2f", cmap="vlag", vmin=-1, vmax=1, center=0).

Acht Tage mit Temperatur (°C), Fahrradverleihzahlen, Niederschlag (mm) und Windgeschwindigkeit (km/h). Die Korrelationsmatrix ergibt für Temperatur und Verleihzahlen 0,92, für Verleihzahlen und Niederschlag −0,82, für Niederschlag und Wind 0,75 und für Temperatur und Wind −0,38. Mit der Farbskala „vlag“ erscheint das stark positiv korrelierte Paar tiefrot, das stark negativ korrelierte Paar tiefblau und das schwach korrelierte Paar Temperatur und Wind in einem blassen Farbton nahe der weißen Mitte.

Ohne vmin und vmax reichen die Farben vom kleinsten bis zum größten Wert der jeweiligen Tabelle. Daher kann dieselbe Farbe in zwei Heatmaps unterschiedliche Werte bedeuten. Lege zum Vergleich von Heatmaps die Grenzen fest und verwende für Korrelationen vmin=-1, vmax=1. Eine sequenzielle Farbskala wie „rocket“ (Standard von seaborn), „viridis“ oder „Blues“ eignet sich für Werte von niedrig bis hoch; eine divergierende Farbskala wie „vlag“, „coolwarm“ oder „RdBu_r“ eignet sich für Werte oberhalb und unterhalb eines Bezugswerts wie 0, wobei center auf dem aussagekräftigen Mittelpunkt liegt. Ist center gesetzt und kein cmap angegeben, verwendet seaborn das divergierende „icefire“.

Nützliche Optionen: linewidths=0.5 zeichnet dünne Linien zwischen den Zellen, square=True macht die Zellen quadratisch, cbar_kws={"label": "Visitors"} beschriftet die Farbleiste und fehlende Werte (NaN) bleiben leer. mask=np.triu(np.ones_like(corr, dtype=bool)) blendet das obere Dreieck und die Diagonale einer Korrelationsmatrix aus, die das untere Dreieck wiederholen.

In Matplotlib zeichnet im = ax.imshow(values, cmap="viridis"); fig.colorbar(im, ax=ax) eine Heatmap eines 2-dimensionalen Arrays, mit Zeile 0 oben; „viridis“ ist die Standardfarbskala von Matplotlib. imshow beschriftet die Achsen mit Zeilen- und Spaltennummern, lege Namen daher selbst fest: ax.set_xticks(range(len(cols)), labels=cols). ax.pcolormesh ist eine Alternative für Zellen unterschiedlicher Größe.

Ein Korrelationskoeffizient misst nur die Stärke eines linearen Zusammenhangs. Eine Korrelation nahe 0 schließt einen starken gekrümmten Zusammenhang nicht aus, und ein einzelner Ausreißer kann einen Koeffizienten stark erhöhen oder senken. Prüfe die zugehörigen Streudiagramme, zum Beispiel mit einem Pairplot, bevor du eine Korrelations-Heatmap interpretierst.

Wichtige Erkenntnisse

  • Die Farben einer Heatmap stellen Tabellenwerte dar.
  • Lege für Vergleiche zwischen Diagrammen die Farbskalengrenzen fest.
  • Korrelationsskalen reichen von −1 bis 1.
  • Prüfe Streudiagramme, bevor du Korrelationen interpretierst.
5

Abbildungen mit mehreren Teilgrafiken erstellen, annotieren und exportieren

Eine nützliche Abbildung benötigt oft mehrere Ansichten derselben Daten. Teilgrafiken ermöglichen den Vergleich von Gruppen, Annotationen verbinden eine Aussage mit einem bestimmten Wert und Exporteinstellungen machen aus dem Ergebnis ein Bild, das zum Verwendungszweck passt. Behalte während des gesamten Vorgangs die Kontrolle über die Figure. Das Objekt, das deine Diagramme enthält, legt auch ihre Gesamtgröße fest und ist der zuverlässigste Weg, genau das erstellte Ergebnis zu speichern.

5.1 Mehrere Diagramme in einer Figure anordnen

Small Multiples sind mehrere Diagramme desselben Typs, je eines für eine Teilmenge der Daten. Sie werden mit denselben Skalen nebeneinander gezeichnet, sodass sich die Teilmengen vergleichen lassen. In Matplotlib werden sie als Raster von Axes-Objekten in einer Figure erstellt.

fig, axes = plt.subplots(2, 3, figsize=(12, 6)) gibt eine Figure und ein 2 × 3-NumPy-Array von Axes-Objekten zurück. axes[0, 0] ist die Teilgrafik oben links und axes[1, 2] die unten rechts. Bei einer Zeile oder einer Spalte ist das Array eindimensional, sodass plt.subplots(1, 3) die Axes-Objekte axes[0], axes[1] und axes[2] ergibt. axes.flat durchläuft alle Teilgrafiken zeilenweise.

Das Array selbst kann nicht zeichnen: axes.plot(...) löst AttributeError: 'numpy.ndarray' object has no attribute 'plot' aus. Wähle zuerst eine Teilgrafik per Index aus, wie in axes[0, 1].plot(...).

sharex=True und sharey=True geben allen Teilgrafiken dieselben x- beziehungsweise y-Achsengrenzen. Dadurch bedeuten gleiche Höhen in jeder Teilgrafik gleiche Werte, und nur die äußeren Teilgrafiken zeigen Teilstrichbeschriftungen. Ohne gemeinsame Achsen skaliert jede Teilgrafik nach ihren eigenen Daten, sodass ein kleiner Wertebereich genauso groß aussehen kann wie ein großer.

fig, axes = plt.subplots(2, 2, sharey=True, layout="constrained"), dann for ax, (name, grp) in zip(axes.flat, rain.groupby("station")): ax.plot(grp["month_num"], grp["rain_mm"], marker="o"); ax.set_title(name). Die drei Stationen füllen drei der vier Teilgrafiken; axes[1, 1].axis("off") blendet die leere vierte aus.

Beschriftungen benachbarter Teilgrafiken können sich überlappen. layout="constrained" in plt.subplots oder plt.figure passt die Abstände automatisch an; fig.tight_layout(), nach dem Zeichnen aufgerufen, ist die ältere Alternative. fig.suptitle("Monthly rainfall by station") ergänzt einen Titel für die gesamte Figure und fig.supxlabel(...) und fig.supylabel(...) ergänzen gemeinsame Achsenbeschriftungen.

Teilgrafiken unterschiedlicher Größe: plt.subplots(1, 2, gridspec_kw={"width_ratios": [2, 1]}) macht die linke Teilgrafik doppelt so breit wie die rechte. fig, axd = plt.subplot_mosaic([["top", "top"], ["left", "right"]]) gibt ein Dictionary von Axes-Objekten zurück, hier eine breite Teilgrafik axd["top"] über zwei kleineren.

Diagramme von pandas und Funktionen von seaborn auf Axes-Ebene können mit ax= ausgewählte Teilgrafiken füllen: wide["North"].plot(ax=axes[0, 0]) oder sns.histplot(data=commutes, x="minutes", ax=axes[0, 1]). So lassen sich Diagramme aus allen drei Bibliotheken in einer Figure kombinieren.

Wichtige Erkenntnisse

  • Wähle vor dem Zeichnen ein Axes aus dem Array per Index aus.
  • Gemeinsame Skalen erleichtern Vergleiche zwischen Teilgrafiken.
  • Constrained Layout schafft Platz für Beschriftungen.

5.2 Daten mit seaborn in Facetten darstellen

Bei der Facettierung wird dasselbe Diagramm für jede Ausprägung einer kategorialen Variablen einmal gezeichnet, jeweils in einer eigenen Teilgrafik mit gemeinsamen Achsen. Die Funktionen von seaborn auf Figure-Ebene tun dies mit col= (Teilgrafiken nebeneinander), row= (Teilgrafiken untereinander) und col_wrap= (nach dieser Anzahl von Spalten eine neue Zeile beginnen).

sns.relplot(data=rain, x="month_num", y="rain_mm", col="station", col_wrap=2, kind="line", height=3, aspect=1.5) zeichnet drei Teilgrafiken, zwei in der ersten und eine in der zweiten Zeile. Jede Teilgrafik ist 3 Zoll hoch und 3 × 1,5 = 4,5 Zoll breit, sodass die Figure etwa 9 × 6 Zoll groß ist.

row und col zusammen erzeugen ein Raster mit einer Teilgrafik pro Kombination von Ausprägungen: Zwei Jahreszeiten als Zeilen und drei Stationen als Spalten ergeben 2 × 3 = 6 Teilgrafiken. col_wrap lässt sich nicht mit row kombinieren.

Dieselben Argumente funktionieren für jeden Diagrammtyp: sns.displot(data=commutes, x="minutes", col="mode") ergibt ein Histogramm pro Verkehrsmittel und sns.catplot(data=rain, x="station", y="rain_mm", col="season", kind="box") ergibt Boxplots pro Jahreszeit.

Teilgrafiken teilen standardmäßig ihre x- und y-Achsen, sodass sich Höhen zwischen ihnen vergleichen lassen. Wenn jede Teilgrafik nach ihren eigenen Daten skaliert wird, werden Details innerhalb kleiner Gruppen sichtbar, der Vergleich zwischen Teilgrafiken kann auf einen Blick aber irreführend sein. Übergib bei relplot und displot facet_kws={"sharey": False}; catplot nimmt sharey=False direkt entgegen. Wird es zusätzlich in facet_kws übergeben, löst dies einen TypeError aus.

sns.FacetGrid erstellt das Raster direkt und zeichnet dann in jede Teilgrafik: g = sns.FacetGrid(commutes, col="mode", height=3); g.map_dataframe(sns.histplot, x="minutes"); g.add_legend(). g.map(plt.scatter, "temp_c", "rentals") übergibt die benannten Spalten als Positionsargumente an eine Zeichenfunktion.

Passe das Raster mit seinen Methoden an: g.set_titles("{col_name}") setzt die Titel der Teilgrafiken anhand der Namen der Ausprägungen, g.set_axis_labels("Month", "Rainfall (mm)") beschriftet alle Achsen und g.set(ylim=(0, 120)) wendet eine Axes-Einstellung auf jede Teilgrafik an. Mit g.axes_dict["Coast"] oder g.axes.flat erreichst du einzelne Axes-Objekte, und g.figure.suptitle("Rainfall by station", y=1.02) ergänzt einen Gesamttitel über den Teilgrafiken.

hue und col teilen beide nach einer Variablen auf. hue legt die Gruppen in einem Axes übereinander, was bei wenigen Gruppen einen direkten Vergleich erleichtert; col trennt sie, sodass die Darstellung lesbar bleibt, wenn sich Linien oder Punkte überlagern würden oder es viele Gruppen gibt. Beide lassen sich gleichzeitig verwenden, zum Beispiel col="station", hue="season".

Funktionen auf Figure-Ebene zeichnen nicht in ein vorhandenes Axes (relplot, displot und catplot ignorieren ax= mit einer Warnung, lmplot lehnt es ab) und akzeptieren nicht Matplotlibs figsize (die Übergabe löst einen Fehler aus): Lege die Größe des Rasters mit height und aspect fest. Um ein facettiertes Diagramm neben anderen Diagrammen in einer Matplotlib-Figure zu platzieren, erstelle die Teilgrafiken stattdessen mit plt.subplots und Funktionen auf Axes-Ebene.

Wichtige Erkenntnisse

  • Facetten teilen Zeilen nach Gruppen auf Teilgrafiken auf.
  • Die Abmessungen der Teilgrafiken werden mit height und aspect festgelegt.
  • Mit Rastermethoden lässt sich die gesamte Darstellung anpassen.
  • Diagramme auf Figure-Ebene können kein vorhandenes Axes füllen.

5.3 Annotationen und Referenzlinien hinzufügen

ax.text(x, y, "text") schreibt Text an eine Position in Datenkoordinaten, also in denselben Einheiten wie die dargestellten Werte. ha („left“, „center“, „right“) und va („top“, „center“, „bottom“) richten den Text an diesem Punkt aus; fontsize und color gestalten ihn.

Mit transform=ax.transAxes sind die Positionen stattdessen Anteile des Axes: (0|0) ist die untere linke und (1|1) die obere rechte Ecke. ax.text(0.02, 0.95, "n = 20", transform=ax.transAxes, va="top") hält einen Hinweis unabhängig von Daten und Achsengrenzen in der oberen linken Ecke. Text in Datenkoordinaten verschiebt sich bei geänderten Achsengrenzen und kann außerhalb des Zeichenbereichs landen.

ax.annotate("Wettest month", xy=(1, 110), xytext=(2, 115), arrowprops=dict(arrowstyle="->")) schreibt den Text an xytext und zeichnet einen Pfeil zum Punkt xy; beide Angaben sind standardmäßig Datenkoordinaten. textcoords="offset points" macht xytext zu einem Versatz von xy in Punkt, zum Beispiel xytext=(10, 10) für 10 Punkt nach rechts und oben.

Referenzlinien erstrecken sich über das ganze Axes: ax.axhline(50, color="gray", linestyle="--", label="Target") zeichnet eine horizontale Linie bei y = 50 und ax.axvline(...) eine vertikale. ax.axvspan(6, 8, alpha=0.2) schattiert den Bereich von x = 6 bis x = 8, zum Beispiel eine Ferienzeit. ax.hlines(y, xmin, xmax) zeichnet horizontale Linien über einen begrenzten Bereich.

Im Histogramm der 20 Pendelzeiten beträgt das arithmetische Mittel 650 ÷ 20 = 32,5 Minuten und der Median 30,5 Minuten. ax.axvline(32.5, color="black", linestyle="--"); ax.text(33.5, 6.5, "mean 32.5 min") markiert den Mittelwert, der rechts vom Median liegt, weil einzelne lange Pendelzeiten ihn erhöhen.

Balkenwerte: ax.bar_label(bars, fmt="%.0f") beschriftet die von ax.bar zurückgegebenen Balken. Bei Balken, die von pandas oder seaborn gezeichnet wurden, stehen die Balken in ax.containers, sodass ax.bar_label(ax.containers[0]) die erste Datenreihe beschriftet. padding=3 verschiebt die Beschriftungen um 3 Punkt von den Balkenenden weg.

Formen stammen aus matplotlib.patches: ax.add_patch(Rectangle((x, y), width, height, fill=False, edgecolor="red")) umrandet einen Bereich in Datenkoordinaten; Circle und Polygon funktionieren genauso.

Text lässt sich mit f-Strings aus den Daten berechnen, sodass Beschriftungen bei Änderungen der Daten korrekt bleiben: ax.text(..., f"mean {commutes['minutes'].mean():.1f} min"). Annotationen werden über den Daten gezeichnet; platziere sie in leeren Bereichen und verwende nur wenige, damit sie Wichtiges hervorheben.

Wichtige Erkenntnisse

  • Datenkoordinaten verankern Text an Messwerten.
  • Axes-Koordinaten verankern Text an der Teilgrafik.
  • Eine Annotation trennt den Zielpunkt von der Textposition.
  • Berechne veränderliche Beschriftungen aus den Daten.

5.4 Abbildungen für Berichte und das Web speichern

fig.savefig("rainfall.png") speichert die Figure; die Dateiendung legt das Format fest: PNG und JPEG sind Rastergrafiken aus Pixeln, während SVG und PDF Vektorgrafiken aus Formen sind. format="pdf" legt das Format ausdrücklich fest.

Rastergrafiken haben eine feste Anzahl von Pixeln und werden beim Vergrößern unscharf; Vektordateien bleiben bei jeder Größe scharf und eignen sich für Berichte, Druck und Dokumente. PNG ist ein gutes Rasterformat für Diagramme im Web und auf Präsentationsfolien. Die JPEG-Kompression ist verlustbehaftet und lässt dünne Linien und Text unscharf werden, daher eignet sie sich schlecht für Diagramme.

Pixelgröße = Figure-Größe in Zoll × dpi (Punkte pro Zoll). fig, ax = plt.subplots(figsize=(8, 5)), mit dpi=150 gespeichert, ergibt 8 × 150 mal 5 × 150 = 1.200 × 750 Pixel. Ohne dpi verwendet savefig den dpi-Wert der Figure, standardmäßig 100, sodass dieselbe Figure 800 × 500 Pixel groß wird. Bei Vektorformaten beeinflusst dpi nur eingebettete Rasterteile.

Text- und Linienbreiten werden in Punkt festgelegt (1 Punkt = 1/72 Zoll), bezogen auf die Größe der Figure in Zoll. Ein höherer dpi-Wert fügt Pixel hinzu, ohne die relative Größe des Textes zum Diagramm zu ändern; ein größeres figsize macht den Text dagegen relativ kleiner. Wähle figsize für die endgültige Anzeigegröße und dpi für die Schärfe.

bbox_inches="tight" schneidet leere Ränder ab und schließt Elemente ein, die über die Figure hinausragen, etwa eine außerhalb des Axes platzierte Legende; das gespeicherte Bild ist dann etwas kleiner oder größer als Figure-Größe × dpi. pad_inches=0.1 legt den verbleibenden Rand fest.

transparent=True speichert ohne Hintergrund, was sich für Folien mit farbigem Hintergrund eignet; facecolor="white" erzwingt einen weißen Hintergrund. Das ist wichtig, wenn sonst ein dunkles Notebook-Gestaltungsschema in der Datei erscheinen würde.

plt.savefig speichert die aktuelle Figure, rufe es daher vor einem blockierenden plt.show() auf: Nach dem Schließen des Fensters verwaltet pyplot die Figure nicht mehr, und ein späteres plt.savefig(...) speichert eine neue, leere Figure. In einem Jupyter-Notebook gibt pyplot die Figure auch am Ende der Zelle frei, sodass plt.savefig in einer späteren Zelle ein leeres Bild speichert. Beide Probleme lassen sich vermeiden, indem du die Figure in einer Variablen behältst: fig.savefig(...) funktioniert auch nach plt.show() oder in einer späteren Notebook-Zelle.

Ergebnisse von seaborn werden auf dieselbe Weise gespeichert: ein Diagramm auf Axes-Ebene über seine Figure mit ax.figure.savefig("box.png", dpi=200) und ein Raster auf Figure-Ebene mit g.savefig("facets.png", dpi=200), das standardmäßig enge Begrenzungsrahmen verwendet.

for name, grp in rain.groupby("station"):
    grp = grp.sort_values("month_num")
    fig, ax = plt.subplots(figsize=(6, 4))
    ax.plot(grp["month_num"], grp["rain_mm"], marker="o")
    ax.set(title=name, xlabel="Month", ylabel="Rainfall (mm)")
    fig.savefig(f"rain_{name}.png", dpi=150, bbox_inches="tight")
    plt.close(fig)

. Das Schließen jeder Figure hält den Speicherbedarf gering und vermeidet die Warnung über mehr als 20 offene Figures.

Wichtige Erkenntnisse

  • Speichere das Figure-Objekt, das du erstellt hast.
  • Zoll mal dpi ergibt die Abmessungen einer unbeschnittenen Rastergrafik.
  • Enge Begrenzungsrahmen ändern den Rand des Exports.
  • Die Vektorausgabe erhält die Formen.
  • Schließe beim Sammelexport jede Figure nach dem Speichern.

Visualisierung mit Matplotlib und Seaborn: Beispiele

5 Interaktive Lektionen

1

Diagramme mit Figure- und Axes-Objekten von Matplotlib erstellen

15 Schritte
Erstelle, beschrifte und untersuche eine Matplotlib-Figure.
  1. 1
    EinführungEin Diagramm nach dem anderen erstellen

    Ein Zeichenbefehl braucht einen Ort zum Zeichnen. Matplotlib macht diesen Ort ausdrücklich kenntlich: Eine Figure enthält einen oder mehrere Zeichenbereiche, und jeder Bereich enthält die Markierungen und Beschriftungen. Beginne mit einem Bereich und ergänze dann mit denselben Objekten Linien, Punkte, Balken und nützliche Einstellungen. Wenn du die Figure und jeden Zeichenbereich benennst, kannst du leichter das richtige Diagramm ändern, wenn ein Notebook wächst oder eine Figure mehrere Teilgrafiken enthält.

  2. 2
    ErklärungDie Zeichenfläche aufbewahren

    Eine Figure enthält das gesamte Bild. Ein Axes enthält ein Diagramm und seine Koordinatenachsen. Erstelle beide ausdrücklich, damit spätere Befehle ein eindeutiges Ziel haben.

    import matplotlib.pyplot as plt
    fig, ax = plt.subplots(figsize=(7, 4))
    

    Breite und Höhe sind in Zoll angegeben. Die Variable ax verweist auf den Zeichenbereich innerhalb von fig; dieses Objekt erhält die Linie und ihre Beschriftungen.

  3. 3
    BeispielIn den Bereich zeichnen

    Füge dem gerade erstellten Axes eine kurze Temperaturreihe hinzu. Jedes Paar wird zu einem Punkt auf der Linie.

    ax.plot([1, 2, 3], [8, 11, 10])
    ax.set(title="Daily temperature",
           xlabel="Day", ylabel="Temperature (°C)")
    

    Ein erneuter Aufruf von ax.plot würde diesem Bereich eine weitere Linie hinzufügen. In einem Skript zeigt plt.show() die Figure an; ein Notebook zeigt sie normalerweise unter der Zelle an.

  4. 4
    HerausforderungEinen Titelaufruf korrigieren

    Der Aufruf ax.title("Daily temperature") löst den Fehler „Text object is not callable“ aus. Wie muss er geändert werden?

    ---reveal---

    Verwende ax.set_title("Daily temperature"). Das Axes-Attribut title ist bereits ein Textobjekt; set_title ist die Methode, die es ändert. Das pyplot-Gegenstück ist plt.title(...), es wirkt aber auf das jeweils aktuelle Axes.

  5. 5
    ErklärungBeobachtungen zusammenhalten

    Eine Linie verbindet Punkte in der Eingabereihenfolge. Enthält die Entfernungsspalte 4, 1, 3 km, verläuft die Linie erst rückwärts und dann vorwärts. Sortiere vollständige Beobachtungen nach Entfernung, sodass jede Höhe bei ihrer ursprünglichen Entfernung bleibt.

    route = route.sort_values("distance_km")
    ax.plot(route["distance_km"], route["elevation_m"])
    

    Ein Streudiagramm benötigt keine Verbindungsreihenfolge, weil jeder Marker eine separate Beobachtung ist.

  6. 6
    BeispielJede Datenreihe kenntlich machen

    Linien- und Markerstile können Datenreihen ebenso wie Farben kennzeichnen. Füge beim Zeichnen eine Beschriftung hinzu und lasse das Axes dann seine Legende erstellen.

    ax.plot([1, 2, 3], [4, 8, 7], "o--", label="East")
    ax.plot([1, 2, 3], [6, 7, 9], "s-", label="West")
    ax.legend(title="Site")
    

    In einem Streudiagramm benötigen numerische c-Werte eine Farbleiste, die ihren Farbverlauf erklärt. Verringere alpha, wenn überlagerte Punkte die Stichprobe verdecken.

  7. 7
    HerausforderungEine Größenänderung vorhersagen

    Ein Marker im Streudiagramm verwendet s=25. Du änderst den Wert bei gleicher Markerform auf s=100. Wie ändert sich seine Breite?

    ---reveal---

    Die Breite verdoppelt sich. Die Fläche ist um den Faktor vier gewachsen und die Längenmaße wachsen um die Quadratwurzel dieses Faktors. s im Streudiagramm wird in Quadratpunkt gemessen; würdest du es als Breite lesen, würdest du fälschlich eine Vervierfachung vorhersagen.

  8. 8
    ErklärungKategorien und Werte platzieren

    Balken verwenden getrennte Kategorienpositionen. Beginne mit einer Zahl pro Kategorie; Zeichenketten werden in der angegebenen Reihenfolge zu Beschriftungen in gleichen Abständen. Ein horizontales Diagramm lässt Platz für lange Namen.

    fig, ax = plt.subplots()
    bars = ax.barh(["Bus", "Rail", "Walk"], [48, 37, 25])
    ax.invert_yaxis()
    ax.bar_label(bars)
    

    Die Umkehrung setzt die erste Kategorie nach oben. Würdest du nur die Namen umkehren, wären die Werte den falschen Kategorien zugeordnet.

  9. 9
    BeispielEinen Stapel von der Basis aus aufbauen

    Angenommen, Fahrten an einem Wochentag bestehen aus 32 Busfahrten und 18 Bahnfahrten. Das zweite Balkensegment muss am oberen Ende des ersten beginnen.

    ax.bar(["Weekday"], [32], label="Bus")
    ax.bar(["Weekday"], [18], bottom=[32], label="Rail")
    ax.legend()
    

    Das Bahnsegment hat die Höhe 18 und endet bei 50. Kommt ein drittes Verkehrsmittel hinzu, ist seine Basislinie die kumulierte Summe der beiden bereits gezeichneten Segmente.

  10. 10
    HerausforderungDie gruppierten Balken positionieren

    Zwei Balken sind jeweils 0,4 breit und sollen zusammen um die Kategorienposition 1 zentriert sein. Wo sollten ihre Mittelpunkte liegen?

    ---reveal---

    Verwende 0,8 und 1,2, jeweils eine halbe Breite vom Teilstrich entfernt. Ihre inneren Kanten treffen sich bei 1 und das Paar ist auf der Kategorie zentriert. Die Positionen 1 und 1,4 ergäben zwar benachbarte Balken, würden aber den Gesamtmittelpunkt vom Teilstrich der Kategorie weg verschieben.

  11. 11
    ErklärungPositionen und Beschriftungen unterscheiden

    Teilstriche markieren Koordinatenpositionen; ihre Beschriftungen sind der dort angezeigte Text. Gib beides zusammen an, wenn du numerische Monatspositionen durch Namen ersetzt.

    ax.set_xticks([1, 2, 3], labels=["Jan", "Feb", "Mar"])
    ax.set_ylabel("Rainfall (mm)")
    ax.grid(axis="y", alpha=0.3)
    

    Ein Formatierer ändert die Anzeige vorhandener Zahlen. Er skaliert die Daten nicht neu; prüfe daher, ob Prozentangaben als Anteile oder als Zahlen von 0 bis 100 gespeichert sind.

  12. 12
    BeispielEine aussagekräftige Skala wählen

    Gleiche Schritte auf einer linearen Skala bedeuten gleiche Differenzen. Gleiche Schritte auf einer logarithmischen Skala bedeuten gleiche Verhältnisse.

    ax.set_yscale("log")
    

    Die Werte 5, 50 und 500 haben gleiche Abstände, weil jeder Wert das Zehnfache des vorherigen ist. Null und negative Werte können auf einer gewöhnlichen logarithmischen Skala nicht erscheinen. Stile steuern das Aussehen unabhängig davon: Verwende einen Stilkontext, wenn ein anderes Erscheinungsbild nur für einen Codeblock gelten soll.

  13. 13
    HerausforderungDie gewünschte Teilgrafik beschriften

    Eine Figure mit zwei Teilgrafiken benötigt einen Titel auf der ersten, aber plt.title(...) ändert die zweite. Wie kann der Code zuverlässig die erste Teilgrafik ansprechen?

    ---reveal---

    Rufe axes[0].set_title(...) auf. Das benannte Axes ist eindeutig angegeben, sodass der aktuelle pyplot-Zustand das Ziel nicht mehr bestimmt. Das ist wichtig, wenn eine Figure mehrere Teilgrafiken enthält oder eine Hilfsfunktion ein anderes Axes erstellt oder auswählt.

  14. 14
    HerausforderungEine numerische Farbskala erklären

    Ein Streudiagramm verwendet die Punktfarbe für die Niederschlagsmenge und die Markerfläche für die Anzahl der Ausleihen. Seine Legende nennt Stationen, erklärt aber die numerischen Farben nicht. Was benötigt die Figure noch?

    ---reveal---

    Füge eine Farbleiste hinzu, die mit dem Streudiagramm-Ergebnis verbunden ist, und beschrifte sie mit „Niederschlag (mm)“. Die Stationslegende erklärt die Gruppen, während die Farbleiste die numerischen Farbtöne erklärt. Wenn du das zurückgegebene Streudiagramm-Objekt aufbewahrst, kann fig.colorbar dieselbe Zuordnung wie die dargestellten Punkte verwenden.

  15. 15
    ZusammenfassungDas erstellte Ergebnis prüfen

    Ein Diagramm hat eine Zeichenfläche, einen Zeichenbereich und Artists, die zu diesem Bereich gehören. Prüfe, ob jede Datenreihe die vorgesehenen Beobachtungspaare beibehält, die Beschriftungen Variablen und Einheiten nennen und numerische Farbzuordnungen eine Erklärung haben. Wenn eine Änderung die falsche Stelle betrifft, prüfe, welches Axes den Methodenaufruf erhalten hat. Wenn eine Form falsch aussieht, prüfe Reihenfolge und Koordinaten der Daten, bevor du ihren Stil änderst.

2

Daten direkt aus pandas grafisch darstellen

9 Schritte
Bereite vor dem Zeichnen die richtigen Werte und das passende Format vor.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungDie Tabelle für das Diagramm nutzen
  2. 2
    ErklärungDie Tabellenbeschriftungen nutzen
  3. 3
    BeispielNumerische Spalten auswählen
  4. 4
    HerausforderungLinien und Balken ausrichten
  5. 5
    ErklärungVor dem Zeichnen zusammenfassen
  6. 6
    BeispielEin Format für die nächste Bibliothek wählen
  7. 7
    HerausforderungEin wiederholtes Pivot-Paar behandeln
  8. 8
    HerausforderungZusammenfassen und umformen
  9. 9
    ZusammenfassungDas erstellte Ergebnis prüfen
3

Statistische Diagramme mit seaborn erstellen

12 Schritte
Verknüpfe seaborn-Zuordnungen und statistische Standardeinstellungen mit dem Diagramm.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungVerstehen, was die Funktion berechnet
  2. 2
    ErklärungVariablen Merkmalen zuordnen
  3. 3
    BeispielFestlegen, wer die Anordnung erstellt
  4. 4
    HerausforderungDie Funktion an die Anordnung anpassen
  5. 5
    ErklärungDie Schätzfunktion der Linie verstehen
  6. 6
    BeispielJeden Verlauf erhalten
  7. 7
    HerausforderungEin schmales Band interpretieren
  8. 8
    ErklärungZeilen zählen oder Werte zusammenfassen
  9. 9
    BeispielDie Beobachtungen zeigen
  10. 10
    HerausforderungDie Zusammenfassung wählen
  11. 11
    HerausforderungDie unterschiedlichen Balken erklären
  12. 12
    ZusammenfassungDas erstellte Ergebnis prüfen
4

Verteilungen und Wertematrizen visualisieren

12 Schritte
Arbeite dich von Beobachtungen zu Verteilungen und Farbrastern vor.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungVerdichtete Daten sorgfältig lesen
  2. 2
    ErklärungEine Klasse richtig auszählen
  3. 3
    BeispielHäufigkeit in Dichte umrechnen
  4. 4
    HerausforderungKlassen unterschiedlicher Breite vergleichen
  5. 5
    ErklärungAusreißergrenzen aus der Box berechnen
  6. 6
    BeispielDas beobachtete Ende des Whiskers finden
  7. 7
    HerausforderungHinter gleiche Boxen schauen
  8. 8
    ErklärungMit der Wertematrix beginnen
  9. 9
    BeispielDie Bedeutung der Farben festlegen
  10. 10
    HerausforderungGleiche Farbtöne untersuchen
  11. 11
    HerausforderungZwei Zusammenfassungen gemeinsam prüfen
  12. 12
    ZusammenfassungDas erstellte Ergebnis prüfen
5

Abbildungen mit mehreren Teilgrafiken erstellen, annotieren und exportieren

16 Schritte
Ordne Teilgrafiken an, verankere Annotationen und exportiere das Ergebnis.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungEine Abbildung zur Weitergabe vorbereiten
  2. 2
    ErklärungAdressierbare Teilgrafiken erstellen
  3. 3
    BeispielDas Raster mit Gruppen füllen
  4. 4
    HerausforderungSkalen angemessen vergleichen
  5. 5
    Erklärungseaborn die Tabelle aufteilen lassen
  6. 6
    BeispielDas Raster als Ganzes anpassen
  7. 7
    HerausforderungGemeinsame Skalen mit dem richtigen Argument ändern
  8. 8
    ErklärungDen Bezugspunkt des Textes wählen
  9. 9
    BeispielEine Beschriftung an einem Spitzenwert anbringen
  10. 10
    HerausforderungEine Beschriftung nach dem Filtern aktuell halten
  11. 11
    ErklärungAbmessungen vor Pixeln wählen
  12. 12
    BeispielDie aufbewahrte Figure speichern
  13. 13
    HerausforderungAnordnung und Export gemeinsam planen
  14. 14
    HerausforderungEinen reproduzierbaren Sammelexport abschließen
  15. 15
    TippDas gespeicherte Ergebnis untersuchen
  16. 16
    ZusammenfassungDas erstellte Ergebnis prüfen

Visualisierung mit Matplotlib und Seaborn: Übungsaufgaben

50 Übungsfragen in 5 Sets

Set 1: Diagramme lesen und Grundlagen prüfen10 Übungsfragen

Frage 1 von 10

Was gibt df.plot(y="depth_mm") mit dem Matplotlib-Standard-Backend zurück, wenn es eine Teilgrafik zeichnet?
  1. Ein seaborn-FacetGrid
  2. Ein Matplotlib-Axes
  3. Eine pandas-Series
  4. Eine Matplotlib-Figure
Antwort zeigenAntwort ausblenden
Antwort: B
Ein gewöhnliches pandas-Diagramm gibt das Axes zurück, auf dem es gezeichnet wurde. Du kannst es mit Methoden wie set_ylabel anpassen. Es gibt nicht die gesamte Figure zurück; diese erreichst du über das Attribut figure des Axes, wenn du das Bild speichern möchtest.

Frage 2 von 10

Wie wählst du bei plt.subplots(2, 3) die Teilgrafik unten rechts aus?
  1. axes[2, 3]
  2. axes[1, 3]
  3. axes[2, 1]
  4. axes[1, 2]
Antwort zeigenAntwort ausblenden
Antwort: D
Das Axes-Array verwendet Zeilen- und Spaltenindizes, die bei null beginnen. Die zweite Zeile hat den Index 1 und die dritte Spalte den Index 2, daher ist die Teilgrafik unten rechts axes[1, 2]. Die Indizes 2 und 3 zählen ab eins und liegen außerhalb der Grenzen dieses Arrays.

Frage 3 von 10

Du möchtest die Anzahl der Beobachtungen in jeder Gerätekategorie ermitteln. Welches seaborn-Diagramm liefert sie direkt?
  1. Ein Häufigkeitsdiagramm der Kategorien
  2. Ein Punktdiagramm der Mittelwerte
  3. Ein Balkendiagramm der Mittelwerte
  4. Ein Boxplot der Messwerte
Antwort zeigenAntwort ausblenden
Antwort: A
Ein Häufigkeitsdiagramm berechnet die Anzahl der Zeilen in jeder Kategorie und benötigt keine numerische Zielspalte. Ein Balkendiagramm zeigt normalerweise den Mittelwert einer numerischen Variablen, sodass seine Balken eine Frage zu durchschnittlichen Messwerten statt zu Kategoriehäufigkeiten beantworten würden.

Frage 4 von 10

Die Werte einer y-Achse sind als Anteile gespeichert. Welche Formatierereinstellung zeigt 0,32 als „32%“ an?
  1. PercentFormatter(xmax=0.32)
  2. PercentFormatter(xmax=32)
  3. PercentFormatter(xmax=1)
  4. PercentFormatter(xmax=100)
Antwort zeigenAntwort ausblenden
Antwort: C
Bei xmax=1 entspricht eine ganze Einheit 100 %, sodass 0,32 als 32 % formatiert wird. xmax=100 wäre für Werte geeignet, die bereits auf einer Skala von 0 bis 100 gespeichert sind; bei Anteilen würde 0,32 stattdessen als 0,32 % beschriftet.

Frage 5 von 10

Was beschreibt das standardmäßig schattierte Band um eine Mittelwertlinie in seaborn?
  1. Die Spannweite aller erfassten Werte
  2. Die Unsicherheit der geschätzten Mittelwerte
  3. Die mittlere Hälfte aller Beobachtungen
  4. Eine Standardabweichung aller Beobachtungen
Antwort zeigenAntwort ausblenden
Antwort: B
Das Standardband ist ein durch Bootstrapping berechnetes 95-%-Konfidenzintervall für den Mittelwert bei jedem x. Es beschreibt die Unsicherheit dieser Schätzung. Ein Standardabweichungsband beschreibt die Streuung der Beobachtungen und wird mit errorbar="sd" angefordert; es wird anders interpretiert.

Frage 6 von 10

Für jedes Paar aus Station und Stunde gibt es wiederholte Sensormesswerte. Welche Tabellenoperation ergibt in einer Station-Stunde-Tabelle im Breitformat einen Mittelwert pro Paar?
  1. pivot_table(..., aggfunc="mean")
  2. value_counts() auf Stationsnamen
  3. melt(...) mit Stationskennungen
  4. pivot(...) ohne Aggregation
Antwort zeigenAntwort ausblenden
Antwort: A
Eine Pivot-Tabelle kann wiederholte Station-Stunde-Paare mit einem Mittelwert zusammenfassen und diese Mittelwerte in Zeilen und Spalten anordnen. Eine gewöhnliche Pivotierung verlangt, dass jedes Paar eindeutig ist, und kann daher nicht entscheiden, was mit mehreren Messwerten in derselben Zelle geschehen soll.

Frage 7 von 10

Du möchtest separate Boxplot-Teilgrafiken für kategoriale Daten mit unabhängigen y-Skalen. Welche seaborn-Konfiguration auf Figure-Ebene ist richtig?
  1. catplot(kind="box", col="site", facet_kws={"sharey": False})
  2. boxplot(col="site", sharey=False)
  3. catplot(kind="box", row="site", col_wrap=2)
  4. catplot(kind="box", col="site", sharey=False)
Antwort zeigenAntwort ausblenden
Antwort: D
Verwende catplot für Facetten kategorialer Daten und übergib sharey=False direkt. Anders als relplot und displot übergibt catplot dieses Argument selbst an sein Raster. Eine zusätzliche Übergabe über facet_kws erzeugt daher einen Fehler wegen eines doppelten Arguments. Ein einzelner Boxplot auf Axes-Ebene kann über col keine Facetten erstellen.

Frage 8 von 10

Ein Streifendiagramm verwendet die Farbe für die Schicht, aber beide Schichten liegen innerhalb jeder Kategorie an derselben Position. Was setzt die Gruppen nebeneinander?
  1. Setze native_scale=True.
  2. Setze jitter=False.
  3. Setze dodge=True.
  4. Setze errorbar=None.
Antwort zeigenAntwort ausblenden
Antwort: C
Seitliches Versetzen verschiebt Farbgruppen innerhalb jeder Kategorie auf getrennte Positionen. Streifendiagramme tun dies nicht standardmäßig, aktiviere es daher ausdrücklich. Das Abschalten von Jitter entfernt nur die zufällige Verschiebung der Punkte; die Gruppen würden weiterhin denselben Kategorienmittelpunkt teilen.

Frage 9 von 10

Eine Pivot-Tabelle mit Mittelwerten enthält Gleitkommawerte wie 26,0. Welches Heatmap-Format zeigt ganzzahlige Beschriftungen, ohne den Datentyp zu ändern?
  1. fmt=".2f"
  2. fmt="d"
  3. fmt=".0f"
  4. fmt=".0g"
Antwort zeigenAntwort ausblenden
Antwort: C
Das Gleitkommaformat .0f zeigt null Nachkommastellen und funktioniert mit als Gleitkommazahlen gespeicherten Mittelwerten. Das Ganzzahlformat d benötigt ganzzahlige Daten und kann selbst bei 26,0 einen Fehler auslösen. Die Formatierung des angezeigten Texts ändert die Tabellenwerte nicht.

Frage 10 von 10

Messwerte betragen 8, 12, 16 und 24 Minuten. Ein Filter entfernt Messwerte von mindestens 20 Minuten. Eine Mittelwertlinie soll zu den verbleibenden Zeilen passen und ein Hinweis auf die Stichprobengröße soll bei geänderten Achsengrenzen in der oberen linken Ecke der Teilgrafik bleiben. Was sollte die aktualisierte Figure verwenden?
  1. Eine Mittelwertlinie bei 15 und einen Hinweis „n = 3“ in Axes-Koordinaten.
  2. Eine Mittelwertlinie bei 12 und einen Hinweis „n = 3“ in Datenkoordinaten.
  3. Eine Mittelwertlinie bei 12 und einen Hinweis „n = 4“ in Axes-Koordinaten.
  4. Eine Mittelwertlinie bei 12 und einen Hinweis „n = 3“ in Axes-Koordinaten.
Antwort zeigenAntwort ausblenden
Antwort: D
Die verbleibenden Werte summieren sich bei drei Beobachtungen zu 36, ihr Mittelwert beträgt also 12 Minuten und der Hinweis muss „n = 3“ zeigen. Axes-Koordinaten halten den Hinweis bei geänderten Achsengrenzen nahe der Ecke. Der Mittelwert der ursprünglichen vier Werte ist 15; er würde die ausgeschlossene Beobachtung in der Zusammenfassung behalten.
Set 2: Darstellungsentscheidungen auf neue Daten anwenden10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Welches Koordinatensystem hält einen Hinweis bei geänderten Datengrenzen nahe der oberen linken Ecke einer Teilgrafik?
  1. Die Einheiten der x-Variablen
  2. Die Einheiten der y-Variablen
  3. Die Axes-Koordinaten
  4. Die Datenkoordinaten
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Was gibt 64 in ax.scatter(x, y, s=64) an?
  1. Die Markerfläche in Quadratpunkt
  2. Die Markerbreite in Punkt
  3. Die Deckkraft des Markers in Prozent
  4. Den Markerradius in Punkt
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Welche Klasse enthält bei den Grenzen [0, 5, 10, 15] den Wert 5?
  1. Keine Klasse, weil er eine Grenze ist
  2. Beide Klassen, die an den Wert 5 grenzen
  3. Die Klasse von 0 bis unter 5
  4. Die Klasse von 5 bis unter 10
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Eine Box hat Q1 = 12 und Q3 = 20. Die beobachteten Werte über Q3 sind 24, 30 und 35. Wo endet der obere Whisker standardmäßig?
  1. 24
  2. 30
  3. 32
  4. 35
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Ein Diagramm speichert Anteile als Bruchteile und hat einen Zielwert bei 75 %. Welche Kombination platziert den Zielwert richtig und beschriftet die y-Achse in Prozent?
  1. ax.axhline(0.75) und PercentFormatter(xmax=100)
  2. ax.axhline(0.75) und PercentFormatter(xmax=1)
  3. ax.axhline(75) und PercentFormatter(xmax=100)
  4. ax.axhline(75) und PercentFormatter(xmax=1)
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Eine Routentabelle enthält die Entfernungen [4, 1, 3] km und die zugehörigen Höhen [90, 40, 75] m. Welche Reihenfolge sollte eine vorwärts verlaufende Linie verwenden?
  1. (1, 40), (3, 75), (4, 90)
  2. (1, 90), (3, 40), (4, 75)
  3. (1, 40), (4, 90), (3, 75)
  4. (4, 90), (1, 40), (3, 75)
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Messungen stammen aus den Jahren 2017, 2018 und 2022. Ein seaborn-Diagramm für kategoriale Daten stellt sie in gleichen Abständen dar. Was erhält die tatsächlichen Abstände?
  1. sharey=True
  2. errorbar=None
  3. dodge=True
  4. native_scale=True
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Ein facettiertes Diagramm hat zwei Zeilenausprägungen und vier Spaltenausprägungen. Wie viele Teilgrafiken erstellt es?
  1. 8
  2. 6
  3. 4
  4. 2
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Eine Region hat 9 Bahnfahrten und 3 Wege zu Fuß, eine andere 12 Bahnfahrten und 12 Wege zu Fuß. Du möchtest die Zusammensetzung der Wege mit gleich hohen gestapelten Balken vergleichen. Wie groß sollten die Bahnsegmente sein?
  1. 0,30 und 0,40
  2. 0,43 und 0,57
  3. 0,75 und 0,50
  4. 9,00 und 12,00
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Ein Bericht benötigt eine PNG-Datei mit 900 × 600 Pixeln und einer vollständig sichtbaren außenstehenden Legende. Die geplante Zeichenfläche ist 6 × 4 Zoll groß. Welches Vorgehen steuert sowohl die Abmessungen als auch den Beschnitt am besten?
  1. Verwende 100 dpi, reserviere Platz für die Legende innerhalb der Zeichenfläche und speichere ohne engen Beschnitt.
  2. Verwende 150 dpi, reserviere Platz für die Legende innerhalb der Zeichenfläche und speichere ohne engen Beschnitt.
  3. Verwende 150 dpi, setze die Legende außerhalb der Zeichenfläche und speichere ohne engen Beschnitt.
  4. Verwende 150 dpi, setze die Legende außerhalb der Zeichenfläche und erzwinge einen engen Beschnitt, um die Größe zu erhalten.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 3: Tabellen, Zusammenfassungen und Diagramme verbinden10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Ein seaborn-Liniendiagramm mit Standardeinstellungen enthält wiederholte Messungen beim selben x-Wert. Was zeigt die Linie bei diesem x-Wert?
  1. Die Summe der y-Werte
  2. Den Median der y-Werte
  3. Den ersten erfassten y-Wert
  4. Das arithmetische Mittel der y-Werte
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Was bewirkt ein zweiter Aufruf von ax.plot(...) auf einem vorhandenen Axes?
  1. Er ersetzt die alte Linie.
  2. Er erstellt ein zweites Axes.
  3. Er fügt eine weitere Datenreihe hinzu.
  4. Er entfernt die Achsenbeschriftungen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Ein Notebook erstellt und speichert fig in einer Zelle. Eine spätere Zelle soll genau dieses Diagramm speichern, nachdem pyplot es freigegeben hat. Welcher Aufruf ist zuverlässig?
  1. fig.savefig("chart.png")
  2. plt.savefig("chart.png")
  3. plt.show("chart.png")
  4. plt.figure().savefig("chart.png")
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Ein gestapeltes Diagramm hat ein Basissegment der Höhe 28 und ein zweites Segment der Höhe 17. Welche Basislinie und welches obere Ende hat das zweite Segment?
  1. Basislinie 0; oberes Ende 17
  2. Basislinie 28; oberes Ende 45
  3. Basislinie 28; oberes Ende 17
  4. Basislinie 17; oberes Ende 45
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Eine Hilfsfunktion ruft plt.title("Depth") auf, nachdem sie eine zweite Figure erstellt hat. Der Titel soll zum Axes der ersten Figure gehören, das als first_ax gespeichert ist. Wie sollte der Titel gesetzt werden?
  1. first_ax.title("Depth")
  2. first_ax.set_title("Depth")
  3. plt.figure().suptitle("Depth")
  4. plt.title("Depth") nach der Hilfsfunktion
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Eine Lieferzeit liegt über der oberen Ausreißergrenze eines Boxplots. Was solltest du tun, bevor du sie entfernst?
  1. Sie löschen, weil die Grenze ungültige Daten markiert.
  2. Sie durch das Ende des oberen Whiskers ersetzen.
  3. Prüfen, ob die erfasste Zeit gültig ist.
  4. Nur Werte innerhalb des Interquartilsabstands behalten.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Ein Pfeil soll auf (8|42) zeigen und der Text 12 Punkt darüber stehen. Welche Werte sollten xy und xytext bei textcoords="offset points" haben?
  1. xy=(8, 42), xytext=(0, 12)
  2. xy=(8, 42), xytext=(8, 54)
  3. xy=(8, 54), xytext=(0, 12)
  4. xy=(0, 12), xytext=(8, 42)
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Zwei Gruppen haben 40 und 200 Beobachtungen. Eine 5 Minuten breite Klasse enthält 10 aus der ersten und 20 aus der zweiten Gruppe. Die Histogramme sollen jeweils die Fläche eins haben. Welche Dichtehöhen sollte diese Klasse haben und welche Normierungseinstellung ist nötig?
  1. 0,25 und 0,10 pro Minute; common_norm=False.
  2. 0,05 und 0,02 pro Minute; common_norm=True.
  3. 0,01 und 0,02 pro Minute; common_norm=True.
  4. 0,05 und 0,02 pro Minute; common_norm=False.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Eine Series mit den Jahren 2018, 2020 und 2024 als Index wird als pandas-Balkendiagramm gezeichnet. Eine Linie mit diesen numerischen Jahren wird demselben Axes hinzugefügt. Wie können beide Datenreihen übereinstimmen und die Jahresbeschriftungen erhalten bleiben?
  1. Wandle vor dem Zeichnen nur die Balkenhöhen in ein numerisches Array um.
  2. Zeichne beide an den Positionen 0, 1, 2 und beschrifte diese Teilstriche mit Jahren.
  3. Sortiere beide Reihen nach Jahr und behalte ihre vorhandenen Koordinaten.
  4. Lege gleiche y-Achsengrenzen fest und behalte die vorhandenen Koordinaten.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Eine 6 × 3 Zoll große PNG-Datei mit 100 dpi verwendet Beschriftungen in 12 Punkt, die im Verhältnis zum Diagramm passend groß aussehen. Du benötigst 1.200 × 600 Pixel und behältst die Schriftgröße von 12 Punkt bei. Welche Figure-Größe und Auflösung erhalten die Proportionen der Beschriftungen?
  1. 6 × 3 Zoll bei 200 dpi.
  2. 12 × 6 Zoll bei 100 dpi.
  3. 6 × 3 Zoll bei 100 dpi.
  4. 12 × 6 Zoll bei 200 dpi.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 4: Diagrammeinstellungen und Vergleiche untersuchen10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Eine Figure hat drei Zeichenbereiche. Wie viele Axes-Objekte enthält sie?
  1. Drei
  2. Eins
  3. Sechs
  4. Zwei
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Eine Tabelle enthält eine Zeile pro Fahrt und eine Spalte mode. Was liefert die Anzahl der Fahrten pro Verkehrsmittel?
  1. trips["mode"].sort_values()
  2. trips["mode"].unique()
  3. trips["mode"].value_counts()
  4. trips["mode"].drop_duplicates()
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Eine Tabelle im Langformat enthält height_cm, mass_kg und species. Wie kann ein Streudiagramm Arten sowohl durch Farbe als auch durch Markerform kennzeichnen?
  1. Ordne die Art Größe und y zu.
  2. Ordne die Art Farbe und Größe zu.
  3. Ordne die Art x und Stil zu.
  4. Ordne die Art Farbe und Stil zu.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Ein Liniendiagramm von Monaten verwendet Textnamen in der Reihenfolge „May“, „Mar“, „Apr“. Du benötigst die Kalenderreihenfolge und eine Linie pro Standort. Welche Änderung ist geeignet?
  1. Übergib die Monatsreihenfolge an lineplot und ordne den Standort der Farbe zu.
  2. Mache den Monat zu einer geordneten kategorialen Variablen und ordne den Standort der Farbe zu.
  3. Sortiere Monatsnamen alphabetisch und ordne den Standort der Farbe zu.
  4. Ordne den Monat der Farbe zu und sortiere Standortnamen alphabetisch.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Zwei Datenreihen haben eine Balkenbreite von 0,3 und sollen nebeneinander stehen, gemeinsam um x = 2 zentriert. Wo sollten ihre Mittelpunkte liegen?
  1. 1,7 und 2,3
  2. 2,0 und 2,3
  3. 1,85 und 2,15
  4. 1,85 und 2,3
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Eine Facette hat eine Höhe von 4 Zoll und ein Seitenverhältnis von 1,25. Wie breit ist diese Teilgrafik?
  1. 5 Zoll
  2. 3,2 Zoll
  3. 4 Zoll
  4. 1,25 Zoll
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Zwei Stichproben haben dieselben Quartile und Whisker-Endpunkte, aber unterschiedliche Häufungen von Beobachtungen. Welche Darstellung kann den Unterschied sichtbar machen und warum?
  1. Blende Ausreißerpunkte aus, um die fehlenden Häufungen zu zeigen.
  2. Vergrößere die Boxbreite, um die Häufungen zu kodieren.
  3. Lege y-Achsengrenzen fest, um die Boxen unterschiedlich zu machen.
  4. Lege Streifendiagramme darüber, um Einzelwerte zu zeigen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Ein horizontales Rangdiagramm soll die Werte 52, 31 und 19 von oben nach unten zeigen. Die ursprünglichen Name-Wert-Paare sind A–31, B–19, C–52. Welche Vorbereitung und Achseneinstellung erreichen dies?
  1. Paare aufsteigend sortieren, zeichnen und dann die y-Achse umkehren.
  2. Paare absteigend sortieren, zeichnen und dann die y-Achse umkehren.
  3. Paare absteigend sortieren, zeichnen und dann die x-Achse umkehren.
  4. Namen absteigend sortieren, Werte beibehalten und dann zeichnen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Zwei benachbarte Klassen haben die Breiten 2 und 4 und enthalten in einer Stichprobe von 50 jeweils 10 Beobachtungen. Welche Höhen und Flächen haben sie bei Dichteskalierung?
  1. Höhen 0,05 und 0,10; Flächen 0,10 und 0,40
  2. Höhen 0,10 und 0,05; Flächen 0,20 und 0,20
  3. Höhen 0,10 und 0,10; Flächen 0,20 und 0,40
  4. Höhen 0,20 und 0,20; Flächen 0,40 und 0,80
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Ein Bericht benötigt Trends von drei Standorten in einem 2 × 2-Raster, vergleichbar in Millimetern. Die Zeilen treffen in gemischter Monatsreihenfolge ein. Welche Vorgehensweise verhindert rückwärts verlaufende Linien, irreführende Teilgrafikhöhen und eine sichtbar leere Teilgrafik?
  1. Jeden Standort nach Monat sortieren, y-Achsengrenzen teilen und das übrige Axes ausblenden.
  2. Jeden Standort nach Monat sortieren, y-Achsengrenzen teilen und einen Standort im übrigen Axes wiederholen.
  3. Jeden Standort nach Monat sortieren, jede y-Achse einzeln skalieren und das übrige Axes ausblenden.
  4. Jeden Standort nach Tiefe sortieren, y-Achsengrenzen teilen und das übrige Axes ausblenden.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 5: Probleme beim Zeichnen und Exportieren lösen10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Welcher Typ von seaborn-Funktion kann in ein ausgewähltes vorhandenes Matplotlib-Axes zeichnen?
  1. Ein PairGrid-Konstruktor
  2. Eine Funktion auf Axes-Ebene
  3. Eine Funktion auf Figure-Ebene
  4. Ein FacetGrid-Konstruktor
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Auf einer logarithmischen y-Achse bewegt sich ein Punkt von 3 zu 30. Welche Bewegung hat denselben vertikalen Abstand?
  1. 30 zu 300
  2. 30 zu 57
  3. 30 zu 130
  4. 30 zu 60
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Eine Tiefenspalte enthält Zeichenketten wie „15 mm“ und pandas überspringt sie beim Zeichnen. Welche Korrektur ist sinnvoll?
  1. Gib dem Diagramm eine Beschriftung mit dem Einheitentext.
  2. Vergrößere die Figure-Breite und drehe die Teilstrichbeschriftungen.
  3. Ändere den Diagrammtyp von Linien zu horizontalen Balken.
  4. Entferne den Einheitentext und wandle die Werte in Zahlen um.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Eine Stichprobe von 40 Werten hat 12 Beobachtungen in einer Klasse mit der Breite 6 Minuten. Wie groß ist die Dichtehöhe dieser Klasse?
  1. 0,15 pro Minute
  2. 2,00 pro Minute
  3. 0,05 pro Minute
  4. 0,30 pro Minute
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Eine angepasste Gerade steigt insgesamt, aber die Punkte steigen zunächst steil an und flachen dann ab. Was sollte die nächste Untersuchung leiten?
  1. Blende die Punkte aus und beurteile die Anpassung nur anhand ihrer Steigung.
  2. Interpretiere das Konfidenzband so, dass es alle möglichen Beobachtungen enthält.
  3. Deute die Gerade als Beleg für eine überall konstante Änderungsrate.
  4. Untersuche die Krümmung und vergleiche die gerade mit einer gekrümmten Anpassung.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Eine Korrelations-Heatmap hat einen Koeffizienten nahe null, aber das zugehörige Streudiagramm zeigt eine deutliche U-Form. Wie solltest du das Variablenpaar interpretieren?
  1. Es gibt keinen Zusammenhang, weil der Koeffizient nahe null liegt.
  2. Es gibt einen gekrümmten Zusammenhang mit schwachem linearem Zusammenhang.
  3. Es gibt durchgehend einen starken positiven linearen Zusammenhang.
  4. Es gibt durchgehend einen starken negativen linearen Zusammenhang.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Drei Stationsdiagramme verwenden separate automatische y-Achsengrenzen. Eine Änderung um 4 mm sieht genauso hoch aus wie eine Änderung um 40 mm. Wie solltest du die Figure für direkte Größenvergleiche neu erstellen?
  1. Verwende gemeinsame y-Achsengrenzen und behalte die tatsächlichen Werte jeder Station.
  2. Behalte separate Grenzen und gib jeder Teilgrafik dieselbe Höhe.
  3. Normiere jede Station auf ihr eigenes Maximum und teile die y-Achsengrenzen.
  4. Behalte separate Grenzen und gib jeder Teilgrafik denselben Titel.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Für zwei Standorte werden vergleichbare Heatmaps nach Zeitfenster benötigt. Standort A hat für ein Zeitfenster die wiederholten Anzahlen 20 und 40; Standort B hat dafür 70. Jede Zelle soll einen Mittelwert als ganze Zahl anzeigen. Welche Vorbereitung und Anzeigeeinstellungen halten Werte und Farbtöne vergleichbar?
  1. Mit der Summe aggregieren, fmt=".0f" verwenden und Farbskala und Grenzen angleichen.
  2. Mit dem Mittelwert aggregieren, fmt="d" verwenden und Farbskala und Grenzen angleichen.
  3. Mit dem Mittelwert aggregieren, fmt=".0f" verwenden und Farbskala und Grenzen angleichen.
  4. Mit dem Mittelwert aggregieren, fmt=".0f" verwenden und separate automatische Grenzen zulassen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Eine Tabelle erfasst jedes Gerät zu mehreren Zeitpunkten. Du benötigst die einzelnen Geräteverläufe, nach Modell eingefärbt, ohne einen eigenen Legendeneintrag für jedes Gerät. Wie sollte das Liniendiagramm konfiguriert werden?
  1. Verwende das Modell für die Farbe, lasse units weg und behalte den Mittelwert als Schätzfunktion.
  2. Verwende das Gerät für units, das Modell für die Farbe und estimator=None.
  3. Verwende das Gerät für die Farbe, das Modell für units und den Mittelwert als Schätzfunktion.
  4. Verwende das Gerät für den Stil, das Modell für die Farbe und den Mittelwert als Schätzfunktion.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Ein Streudiagramm soll Stichprobenanzahlen der Markerfläche und Niederschlag der Farbe zuordnen. Bei den Anzahlen 20 und 80 soll der zweite Marker doppelt so breit wie der erste sein, und die Leser benötigen eine numerische Erklärung der Niederschlagsfarben. Welche Konstruktion passt?
  1. Verwende s=counts, c=rain_mm und eine Farbleiste aus dem Streudiagramm-Ergebnis.
  2. Verwende s=counts**2, c=rain_mm und eine Farbleiste aus dem Streudiagramm-Ergebnis.
  3. Verwende s=rain_mm, c=counts und eine Farbleiste aus dem Streudiagramm-Ergebnis.
  4. Verwende s=counts, c=rain_mm und eine Legende der beiden Stichprobenanzahlen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Hängst du bei deiner eigenen Aufgabe fest? Hausaufgabenhilfe

Schlüsselbegriffe

78 Schlüsselbegriffe, jeweils mit Definition

A

Achse
Eine Achse ist die x- oder y-Koordinatenachse eines Axes einschließlich ihrer Teilstriche, Teilstrichbeschriftungen und Skala.
Die vertikale Achse eines Temperaturdiagramms kann Teilstrichbeschriftungen in Grad Celsius zeigen.
Aggregation
Aggregation fasst mehrere Zeilen für jede festgelegte Gruppe zu einem Kennwert zusammen, etwa einem Mittelwert, einer Summe oder einer Anzahl.
Eine Aggregation nach Station wandelt Zeilen mit täglichem Niederschlag in einen mittleren Niederschlagswert pro Station um.
Annotation
Eine Annotation ist Text, der einer Zielposition zugeordnet ist, optional mit einem Pfeil und einer separat platzierten Beschriftung.
Eine Annotation kann einen Spitzenwert benennen und den Text daneben platzieren, sodass der Punkt sichtbar bleibt.
Artist
Ein Artist ist ein Objekt, das Matplotlib zeichnet, etwa eine Linie, eine Textbeschriftung, eine Sammlung von Markern oder ein Rechteck.
Das Hinzufügen einer Referenzlinie erstellt einen weiteren Artist im vorhandenen Zeichenbereich.
Ausreißergrenze
Eine Ausreißergrenze ist eine berechnete Schwelle, um ungewöhnliche Werte in einem Boxplot zu markieren; sie liegt üblicherweise 1,5 IQR jenseits eines Quartils.
Die obere Ausreißergrenze kann zwischen Beobachtungen liegen und muss daher nicht der Endpunkt des oberen Whiskers sein.
Ausreißerpunkt
Ein Ausreißerpunkt ist eine Beobachtung, die jenseits der Whisker eines Boxplots gezeichnet wird, weil sie außerhalb der gewählten Ausreißergrenzen liegt.
Eine tatsächliche Verkehrsverzögerung kann als Ausreißerpunkt erscheinen und trotzdem zu den Lieferzeitdaten gehören.
Axes
Ein Axes ist ein Zeichenbereich in einer Matplotlib-Figure mit eigenen Artists, Beschriftungen, Achsengrenzen und einem eigenen Koordinatensystem.
Wähle das richtige Axes aus, bevor du der zweiten Teilgrafik eines Stationsvergleichs einen Titel hinzufügst.
Axes-Array
Ein Axes-Array ist ein NumPy-Array von Zeichenbereichsobjekten, das zurückgegeben wird, wenn Matplotlib mehrere Subplots erstellt.
Wähle vor dem Zeichnen ein Objekt aus dem Axes-Array per Index aus; das Array selbst hat keine Zeichenmethode.
Axes-Koordinaten
Axes-Koordinaten positionieren ein Element anhand von Anteilen des Zeichenbereichs, von null unten links bis eins oben rechts.
Ein Hinweis auf die Stichprobengröße an der Axes-Position (0,02|0,95) bleibt nahe der oberen linken Ecke der Teilgrafik.

B

Bandbreite
Die Bandbreite steuert die Glättung einer Kerndichteschätzung; eine größere Bandbreite erzeugt eine glattere Kurve.
Eine größere Bandbreite kann zwei kleine Erhebungen zusammenführen, die bei einer detailreicheren Kurve erschienen.
BarContainer
Ein BarContainer ist die von einem Balkenzeichenaufruf zurückgegebene Sammlung. Er enthält die Balken, die später Wertbeschriftungen erhalten können.
Bewahre den BarContainer auf, wenn du eine Datenreihe in einem gruppierten Diagramm beschriften möchtest.
Basislinie
Eine Basislinie ist der Anfangswert, von dem aus ein Balken verläuft; gewöhnliche Matplotlib-Balken beginnen bei null, sofern dies nicht geändert wird.
Das zweite Segment eines Stapels verwendet den Wert des ersten Segments als Basislinie.
Breitformat
Das Breitformat speichert separate Datenreihen in getrennten Spalten, die gemeinsame Zeilenkennungen haben.
Eine Tabelle im Breitformat mit einer Spalte pro Station zeichnet in pandas eine Linie pro Station.

C

Constrained Layout
Constrained Layout ist eine Matplotlib-Layout-Engine, die Abstände zwischen Teilgrafiken anpasst, um Platz für Beschriftungen und Gestaltungselemente zu schaffen.
Constrained Layout hilft zu verhindern, dass lange y-Achsenbeschriftungen mit der benachbarten Teilgrafik kollidieren.

D

Datenkoordinaten
Datenkoordinaten geben die Position einer Markierung in den Einheiten der dargestellten Variablen an, sodass ihre Bildschirmposition von den Achsengrenzen abhängt.
Eine Annotation bei 20 Minuten und 12 Beobachtungen verschiebt sich auf dem Bildschirm, wenn sich die Achsengrenzen ändern.
DatetimeIndex
Ein DatetimeIndex ist ein pandas-Index aus Zeitstempeln, den Darstellungsmethoden für eine datumsbasierte horizontale Achse verwenden können.
Ein Resampling eines DatetimeIndex auf Monatsanfänge kann ein Diagramm von Monatsmittelwerten ergeben.
Divergierende Farbskala
Eine divergierende Farbskala verwendet unterschiedliche Farbrichtungen auf beiden Seiten eines aussagekräftigen Mittelpunkts, etwa null.
Eine divergierende Farbskala trennt negative von positiven Korrelationen um eine neutrale Mitte.
dpi
dpi bezeichnet Punkte pro Zoll und rechnet beim Rasterexport die physischen Abmessungen einer Figure in Pixelabmessungen um.
Eine 6 Zoll breite Figure, die mit 200 dpi gespeichert wird, ist vor einem engen Beschnitt 1.200 Pixel breit.

E

Empirische Verteilungsfunktion
Eine empirische Verteilungsfunktion gibt für jeden möglichen Schwellenwert den Anteil der beobachteten Werte an, die höchstens so groß wie dieser Schwellenwert sind.
Ein ECDF-Wert von 0,8 bei 40 Minuten bedeutet, dass 80 % der erfassten Zeiten höchstens 40 Minuten betragen.
Enger Begrenzungsrahmen
Ein enger Begrenzungsrahmen passt den Export an den gezeichneten Inhalt und den Randabstand an und kann dadurch die endgültigen Bildabmessungen ändern.
Ein enger Begrenzungsrahmen kann eine außenstehende Legende einschließen und zugleich ungenutzte Ränder entfernen.

F

FacetGrid
Ein FacetGrid ist ein seaborn-Objekt, das eine Figure und gruppenspezifische Teilgrafiken sowie Methoden zum Zeichnen und Beschriften enthält.
Ein FacetGrid kann eine Histogrammfunktion getrennt auf die Beobachtungen jeder Station anwenden.
Facette
Eine Facette ist eine Teilgrafik, die ein Diagramm für eine durch eine Gruppierungsvariable ausgewählte Teilmenge wiederholt.
Eine Facette pro Verkehrsmittel vergleicht dieselbe Pendelzeitverteilung zwischen Gruppen.
Farbleiste
Eine Farbleiste ist eine numerische Skala, die zeigt, wie Werte in einem Streudiagramm, einer Heatmap oder einem anderen Bild Farben zugeordnet werden.
Eine Farbleiste für Niederschlag ermöglicht es Lesern, den Farbverlauf in einem Streudiagramm von Temperatur und Verleihzahlen zu deuten.
Farbskalengrenzen
Farbskalengrenzen legen die numerischen Endpunkte einer Farbskala und damit die Zuordnung von Werten zu Farben in einem oder mehreren Diagrammen fest.
Übereinstimmende Farbskalengrenzen sorgen dafür, dass ein Blauton in zwei Heatmaps denselben Wert darstellt.
Farbzuordnung
Die Farbzuordnung ist eine semantische Zuordnung in seaborn, die eine Variable durch Farbe darstellt und üblicherweise eine passende Legende ergänzt.
Eine kategoriale Farbzuordnung gibt Stationen unterschiedliche Farben, während eine numerische einen Niederschlagsverlauf zeigen kann.
Figure
Eine Figure ist die gesamte Zeichenfläche von Matplotlib und enthält Zeichenbereiche sowie Figure-weite Elemente wie einen Gesamttitel.
Eine Figure kann ein Niederschlagsliniendiagramm neben einem Histogramm der Tagestemperaturen enthalten.
Figure-Referenz
Eine Figure-Referenz ist eine Python-Variable, die ein Figure-Objekt zur späteren Bearbeitung oder Speicherung aufbewahrt, auch nachdem pyplot es freigegeben hat.
Eine aufbewahrte Figure-Referenz ermöglicht einer späteren Notebook-Zelle, das ursprüngliche Diagramm statt eines leeren zu speichern.
Formatierer für Teilstrichbeschriftungen
Ein Formatierer für Teilstrichbeschriftungen wandelt Koordinatenwerte in angezeigte Beschriftungen um, ohne die zugrunde liegenden numerischen Daten zu ändern.
Ein Prozentformatierer kann den Anteil 0,4 in einem Anteilsdiagramm als „40%“ anzeigen.
Funktion auf Axes-Ebene
Eine Funktion auf Axes-Ebene zeichnet in ein Matplotlib-Axes, akzeptiert ein vorhandenes Axes und gibt das Axes mit dem Diagramm zurück.
Ein seaborn-Histogramm auf Axes-Ebene kann die rechte Teilgrafik einer eigenen Matplotlib-Figure füllen.
Funktion auf Figure-Ebene
Eine Funktion auf Figure-Ebene erstellt eine eigene Figure oder ein eigenes Raster und kann die Daten durch Zeilen- und Spaltenzuordnungen in Teilgrafiken aufteilen.
Ein Diagramm für Zusammenhänge auf Figure-Ebene kann jeder Station eine Teilgrafik mit denselben Achsenskalen geben.

G

Gemeinsame Achse
Eine gemeinsame Achse verknüpft Koordinatenskalen über mehrere Teilgrafiken hinweg, sodass entsprechende Positionen dieselben Werte darstellen.
Eine gemeinsame y-Achse sorgt dafür, dass 80 mm in jeder Stationsteilgrafik an derselben Position liegen.
Gestaltungsschema
Ein Gestaltungsschema ist eine Sammlung von Standardeinstellungen für Stil, Textgröße und Farbpalette, die sich auf danach erstellte Diagramme auswirkt.
Das Festlegen eines seaborn-Gestaltungsschemas ändert auch das Aussehen späterer reiner Matplotlib-Diagramme.
Gestapeltes Balkendiagramm
Ein gestapeltes Balkendiagramm setzt Datenreihen auf kumulierte Basislinien, sodass jeder Balken sowohl Bestandteile als auch eine Gesamtsumme zeigt.
Ein Segment mit 24 Fahrten über einem Segment mit 36 Fahrten ergibt einen gestapelten Balken mit der Gesamthöhe 60.
Gruppiertes Balkendiagramm
Ein gruppiertes Balkendiagramm setzt separate Datenreihen um jede Kategorienposition nebeneinander, sodass ihre Werte verglichen werden können.
Wenn die Balken zweier Stationen um jeden Monat versetzt werden, überlagern sich die beiden Datenreihen nicht.

H

Häufigkeitsdiagramm
Ein Häufigkeitsdiagramm zeigt die Anzahl der Zeilen in jeder Kategorie, ohne eine separate numerische Zielvariable zu benötigen.
Ein Häufigkeitsdiagramm der Verkehrsmittel zeigt, wie viele erfasste Fahrten mit jedem Verkehrsmittel unternommen wurden.
Heatmap
Eine Heatmap stellt eine numerische Tabelle durch farbige Zellen dar; Zeilen- und Spaltenbeschriftungen bezeichnen die Position jeder Zelle.
Eine Heatmap nach Station und Monat kann eine niederschlagsreiche Jahreszeit als Band dunklerer Zellen zeigen.
Histogramm
Ein Histogramm gruppiert numerische Messwerte in benachbarte Intervalle und zeigt ihre Anzahlen oder skalierten Häufigkeiten mit Balken.
Ein Histogramm mit 5 Minuten breiten Klassen gruppiert ähnliche Pendelzeiten im selben Intervall.

I

Index
Ein Index bezeichnet Zeilen in einem pandas-Objekt und liefert die horizontalen Koordinaten für dessen standardmäßiges Liniendiagramm.
Ein Datumsindex ermöglicht einem Niederschlagsliniendiagramm, Datumsangaben ohne separate x-Spalte anzuzeigen.
Interquartilsabstand
Der Interquartilsabstand ist Q3 minus Q1 und misst die Streuung der mittleren Hälfte einer geordneten numerischen Stichprobe.
Beträgt Q1 16 Minuten und Q3 24 Minuten, beträgt der Interquartilsabstand 8 Minuten.

K

Kerndichteschätzung
Eine Kerndichteschätzung ist eine glatte Schätzung der Verteilungsform, die durch das Zusammenfügen kleiner Kurven um die Beobachtungen entsteht.
Eine Kerndichteschätzung kann unter null reichen, selbst wenn jede gemessene Zeit positiv ist.
Klassengrenze
Eine Klassengrenze ist die Grenze eines Histogrammintervalls, die mitbestimmt, welche Werte zu dieser Klasse gehören.
Ein Wert auf einer inneren Klassengrenze gehört zur dort beginnenden Klasse, nicht zur dort endenden.
Konfidenzintervall
Ein Konfidenzintervall drückt die Unsicherheit einer geschätzten Größe mithilfe eines Verfahrens aus, das für wiederholte Stichproben ausgelegt ist.
Das Standardband einer Linie in seaborn ist ein 95-%-Konfidenzintervall für jeden geschätzten Mittelwert.
Korrelationsmatrix
Eine Korrelationsmatrix ist eine symmetrische Tabelle paarweiser Koeffizienten für lineare Zusammenhänge, deren definierte Einträge von −1 bis 1 reichen.
Prüfe neben einer Korrelationsmatrix auch Streudiagramme, weil starke gekrümmte Muster eine geringe Korrelation haben können.

L

Langformat
Das Langformat speichert Variablen in Spalten und Beobachtungen in Zeilen; eine Gruppenspalte bezeichnet die jeweilige Datenreihe.
In einer Tabelle im Langformat kann die Stationsspalte der Farbe und die Niederschlagsspalte der vertikalen Position zugeordnet werden.
Liniendiagramm
Ein Liniendiagramm verbindet Beobachtungen in der angegebenen Reihenfolge und macht so Änderungen entlang einer geordneten Variablen sichtbar.
Wenn Entfernung und Höhe gemeinsam sortiert werden, verläuft die Linie einer Route auf dem Weg vorwärts.
Logarithmische Skala
Eine logarithmische Skala stellt gleiche Verhältnisse positiver Werte statt gleicher Differenzen durch gleiche visuelle Abstände dar.
Auf einer logarithmischen Skala nimmt 2 bis 20 denselben Abstand ein wie 20 bis 200.

M

Markerfläche
Die Markerfläche ist die durch das scatter-Argument s gesteuerte Größe, gemessen in typografischen Quadratpunkt.
Eine Verdopplung der Markerfläche macht einen Marker etwa 1,4-mal so breit, nicht doppelt so breit.

N

Numerische Spalte
Eine numerische Spalte speichert Werte als Zahlen, die Darstellungsmethoden für Messwerte und Zusammenfassungen verwenden können.
Eine Spalte mit Zeichenketten wie „18 mm“ muss bereinigt werden, bevor sie zu einer numerischen Spalte wird.

O

Objektorientierte Schnittstelle
Die objektorientierte Schnittstelle zeichnet und gestaltet Diagramme über benannte Figure- und Axes-Objekte und deren Methoden.
Wenn du eine Referenz auf jedes Axes aufbewahrst, kann eine Zeichenfunktion die gewünschte Teilgrafik beschriften.
Originalskala
Die Originalskala erhält auf einer kategorialen Achse in seaborn die tatsächlichen numerischen oder zeitlichen Abstände, statt gleiche Kategorienschritte zu verwenden.
Mit der Originalskala liegen die Jahre 2019 und 2023 weiter auseinander als 2019 und 2020.

P

Pairplot
Ein Pairplot ist ein Raster, das Paare numerischer Variablen vergleicht und auf der Diagonale die Verteilung jeder einzelnen Variablen zeigt.
Eine Begrenzung eines Pairplots auf drei Variablen ergibt neun Teilgrafiken, bevor wiederholte Paare entfernt werden.
Pivotierung
Eine Pivotierung ordnet Werte in Zeilen und Spalten an, die durch zwei Kennungen festgelegt werden; jedes Kennungspaar muss eindeutig sein.
Wiederholte Messwerte für eine Station und einen Monat müssen vor einer gewöhnlichen Pivotierung aggregiert werden.
plot-Accessor
Der plot-Accessor von pandas stellt Diagrammmethoden für eine Series oder einen DataFrame bereit und verwendet standardmäßig Matplotlib.
Verwende den plot-Accessor auf gruppierten Anzahlen und ergänze anschließend das zurückgegebene Axes um eine Einheitenbeschriftung.

Q

Quartil
Ein Quartil ist eine Grenze, die geordnete Daten in Viertel teilt; Q1 und Q3 begrenzen nach der gewählten Methode die mittlere Hälfte.
Interpolierte Quartile können bei einer kleinen Stichprobe von den von Hand berechneten Medianen der Stichprobenhälften abweichen.

R

Rastergrafik
Eine Rastergrafik speichert ein festes Raster aus Pixeln, sodass Text und Linien beim Vergrößern unscharf aussehen können.
Ein PNG-Export mit genügend Pixeln hält Beschriftungen in der vorgesehenen Anzeigegröße scharf.
Referenzlinie
Eine Referenzlinie markiert in einem Diagramm einen aussagekräftigen Koordinatenwert, etwa einen Zielwert, Mittelwert oder Schwellenwert.
Eine vertikale Referenzlinie am Median hilft, die beiden Seiten einer Verteilung zu vergleichen.
Regressionsgerade
Eine Regressionsgerade ist eine angepasste Gerade, die einen modellierten Zusammenhang zwischen numerischen Variablen in einer Stichprobe zusammenfasst.
Eine Regressionsgerade kann ein gekrümmtes Muster verfehlen, das in den Punkten sichtbar bleibt.

S

Schätzfunktion
Eine Schätzfunktion ist die Regel, mit der wiederholte Beobachtungen zusammengefasst werden, etwa zu ihrem Mittelwert, Median oder ihrer Summe.
Wenn die Schätzfunktion vom Mittelwert zur Summe geändert wird, ändert sich, was die Höhe eines seaborn-Balkens darstellt.
Schwarmdiagramm
Ein Schwarmdiagramm verschiebt einzelne Punkte entlang der Kategorienrichtung, um bei ausreichendem Platz Überlagerungen zu vermeiden.
Ein Schwarmdiagramm kann wiederholte Zeiten getrennt zeigen, statt sie an einer Position zu verdecken.
Seitenverhältnis
Das Seitenverhältnis einer Facette ist ihre Breite dividiert durch ihre Höhe; Höhe mal Seitenverhältnis ergibt die Breite der Teilgrafik.
Eine Facette mit der Höhe 3 Zoll und dem Seitenverhältnis 1,5 hat eine Breite von 4,5 Zoll.
Seitliches Versetzen
Seitliches Versetzen verschiebt Farbgruppen innerhalb jeder Kategorie auf getrennte Positionen, sodass ihre Markierungen nebeneinander verglichen werden können.
Das Aktivieren des seitlichen Versetzens trennt die Farbgruppen in einem Streifendiagramm, die sich sonst überlagern würden.
Semantische Zuordnung
Eine semantische Zuordnung verbindet eine Datenvariable mit einem visuellen Merkmal wie Position, Farbe, Markerstil oder Größe.
Wenn der Standort sowohl der Farbe als auch dem Stil zugeordnet wird, lassen sich dieselben Gruppen auf zwei visuelle Arten unterscheiden.
Sequenzielle Farbskala
Eine sequenzielle Farbskala ordnet Farben von niedrigen zu hohen Werten und macht so Größen in einer numerischen Tabelle sichtbar.
Eine sequenzielle Farbskala eignet sich für nicht negative Besucherzahlen von ruhigen bis zu belebten Zeiträumen.
Small Multiples
Small Multiples wiederholen denselben Diagrammtyp für unterschiedliche Teilmengen und verwenden für den Vergleich meist gemeinsame Skalen.
Eine Niederschlagsteilgrafik pro Station ermöglicht es Lesern, saisonale Muster ohne überlagerte Linien zu vergleichen.
Spaltenumbruch
Ein Spaltenumbruch begrenzt die Anzahl der Facettenspalten und setzt die übrigen Teilgrafiken in späteren Zeilen fort.
Ein Spaltenumbruch nach drei setzt sieben Stationsteilgrafiken in Zeilen mit drei, drei und einer Teilgrafik.
Standardabweichungsband
Ein Standardabweichungsband reicht eine gewählte Anzahl von Standardabweichungen um einen zusammenfassenden Kennwert und zeigt so die Streuung der Daten.
Ein Band von einer Standardabweichung beantwortet eine andere Frage als ein Konfidenzband für einen Mittelwert.
Stilvorlage
Eine Stilvorlage ist ein benannter Satz von Matplotlib-Standardeinstellungen für visuelle Merkmale wie Farben, Gitternetze, Schriften und Linienbreiten.
Ein Stilkontext wendet eine Stilvorlage während eines Blocks an, ohne spätere Diagramme zu ändern.
Streifendiagramm
Ein Streifendiagramm zeichnet einzelne Beobachtungen nach Kategorien, meist mit zufälligem Jitter, um genaue Überlagerungen zu verringern.
Ein Streifendiagramm über einem Boxplot zeigt einzelne Lieferzeiten neben ihrer Zusammenfassung.
Streudiagramm
Ein Streudiagramm platziert separate Marker bei Paaren numerischer Werte, um Zusammenhänge zwischen Beobachtungen zu zeigen.
Jeder Marker in einem Streudiagramm kann die Temperatur und die Fahrradverleihzahl eines Tages darstellen.
Subplot-Mosaik
Ein Subplot-Mosaik legt eine Anordnung fest, in der wiederholte Namen Teilgrafiken über mehrere Zellen spannen lassen, und gibt ein Dictionary von Axes-Objekten zurück.
Ein Subplot-Mosaik kann ein breites Trenddiagramm über zwei kleineren Verteilungsdiagrammen platzieren.

T

Teilstrich
Ein Teilstrich ist eine markierte Position auf einer Koordinatenachse; seine Beschriftung ist der Text, der diese Position bezeichnet.
Teilstriche bei Monatsnummern können mit „Jan“, „Feb“ und „Mar“ beschriftet werden, ohne ihre Positionen zu ändern.

Ü

Überlagerung von Datenpunkten
Eine Überlagerung von Datenpunkten entsteht, wenn sich Markierungen so stark überdecken, dass Beobachtungen verborgen oder dichte Bereiche schwer lesbar werden.
Kleinere, teilweise transparente Marker zeigen in einer großen Stichprobe Häufungen, die durch Überlagerung von Datenpunkten verborgen sind.

U

Umformen ins Langformat mit melt
Beim Umformen ins Langformat mit melt werden Datenreihenspalten in eine Spalte für Variablennamen und eine Wertspalte umgeformt; ausgewählte Kennungen bleiben erhalten.
Das Umformen von drei Stationsspalten ins Langformat erstellt ein Stationsfeld, das seaborn für Facetten verwenden kann.

V

Vektorgrafik
Eine Vektorgrafik speichert Formen und Pfade, die ohne die Pixelbildung einer vergrößerten Rastergrafik skaliert werden können.
Ein SVG-Diagramm hält seinen Vektortext und seine Linien beim Skalieren für einen Bericht scharf.
Violinplot
Ein Violinplot zeigt für jede Gruppe eine gespiegelte Dichteschätzung, häufig mit einer kleinen Zusammenfassung im Inneren.
Ein Violinplot kann zwei Gipfel zeigen, die ein Boxplot derselben Beobachtungen verdeckt.

W

Wahrscheinlichkeitsdichte
Die Wahrscheinlichkeitsdichte skaliert Häufigkeiten anhand von Stichprobengröße und Klassenbreite, sodass die Histogrammfläche einen Anteil der Beobachtungen darstellt.
Eine Dichte von 0,02 pro Minute über eine 10 Minuten breite Klasse ergibt einen Anteil von 0,2.
Whisker
Ein Whisker reicht nach der üblichen Boxplot-Regel von einer Box zum äußersten beobachteten Wert innerhalb seiner Ausreißergrenze.
Eine obere Ausreißergrenze von 36 Minuten und ein Maximum innerhalb der Grenze von 33 setzen den Whisker auf 33 Minuten.

Z

Zeilennormierung
Die Zeilennormierung dividiert jeden Eintrag durch seine Zeilensumme, sodass die Zeile Anteile darstellt, die sich zu eins summieren.
Die Zeilennormierung vergleicht die Zusammensetzung der Verkehrsmittel zwischen Regionen mit unterschiedlich vielen Fahrten.

Über diese Einheit

Von StudeliFehler melden

Erstelle deine eigenen Lernmaterialien

Mach aus deinen Notizen, Folien und Dokumenten Lernleitfäden, Übungsfragen, Karteikarten und 6 weitere Tools.

Jetzt starten