Matplotlib Tortendiagramme

MatplotlibBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie, wie Sie mit Matplotlib, einer der beliebtesten Datenvisualisierungsbibliotheken in Python, Tortendiagramme erstellen und anpassen. Ein Tortendiagramm ist eine kreisförmige statistische Grafik, die in Sektoren unterteilt ist, um numerische Proportionen zu veranschaulichen.

Sie beginnen mit der Datenaufbereitung, erstellen dann ein grundlegendes Tortendiagramm und fügen schrittweise Funktionen wie einen "Explode"-Effekt, Prozentbeschriftungen und einen Schatten hinzu, um das Diagramm informativer und visuell ansprechender zu gestalten.

Alle Operationen werden innerhalb der LabEx WebIDE durchgeführt. Sie schreiben Python-Code in einer Datei und führen ihn aus, um Diagrammbilder zu generieren. Da die grafische Anzeige in dieser Umgebung nicht verfügbar ist, verwenden Sie plt.savefig(), um Ihre Diagramme als Bilddateien zu speichern und sie dann direkt in der IDE anzuzeigen.

Listen für Beschriftungen und Größen vorbereiten

In diesem Schritt bereiten Sie die Daten vor, die zum Erstellen eines Tortendiagramms benötigt werden. Ein Tortendiagramm benötigt zwei Hauptdatensätze: die Beschriftungen für jeden Sektor und die entsprechende Größe oder den Wert jedes Sektors.

Zuerst erstellen wir ein Python-Skript. Im Dateiexplorer der WebIDE auf der linken Seite sehen Sie eine Datei namens main.py im Verzeichnis project. Doppelklicken Sie darauf, um sie im Editor zu öffnen.

Fügen Sie nun den folgenden Code zu main.py hinzu. Dieser Code definiert zwei Python-Listen: labels für die Kategorien und sizes für ihre jeweiligen Anteile.

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]
  • labels: Eine Liste von Zeichenketten (Strings), die zur Beschriftung jedes Sektors des Tortendiagramms verwendet werden.
  • sizes: Eine Liste von Zahlen, die den Wert oder Anteil jedes Sektors darstellen. Die Summe dieser Werte repräsentiert den gesamten Kreis.

Nachdem Sie den Code hinzugefügt haben, sollte Ihre Datei main.py wie folgt aussehen. Dieses Skript erzeugt noch keine Ausgabe, aber es richtet die notwendigen Daten für die nächsten Schritte ein.

Tortendiagramm mit plt.pie(sizes, labels=labels) plotten

In diesem Schritt verwenden Sie die Daten aus dem vorherigen Schritt, um ein grundlegendes Tortendiagramm zu erstellen. Wir verwenden die Funktion plt.pie() aus der Matplotlib-Bibliothek.

Zuerst müssen Sie das Modul matplotlib.pyplot importieren, das üblicherweise mit dem Alias plt importiert wird. Dann können Sie die Funktion plt.pie() aufrufen und Ihre Listen sizes und labels als Argumente übergeben.

Da wir in dieser Umgebung kein GUI-Fenster anzeigen können, speichern wir das Diagramm mit plt.savefig() in einer Bilddatei.

Aktualisieren Sie Ihre Datei main.py mit dem folgenden Code:

import matplotlib.pyplot as plt

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]

## Create a figure and a set of subplots
fig, ax = plt.subplots()

## Plot the pie chart
ax.pie(sizes, labels=labels)

## Save the figure to a file
plt.savefig('/home/labex/project/pie_chart.png')

print("Pie chart saved to pie_chart.png")

Führen Sie nun das Skript aus. Öffnen Sie ein Terminal in der WebIDE (Sie können das +-Symbol im Terminalbereich oder das Menü Terminal > New Terminal verwenden) und führen Sie den folgenden Befehl aus:

python3 main.py

Sie sollten die folgende Ausgabe im Terminal sehen:

Pie chart saved to pie_chart.png

Eine neue Datei namens pie_chart.png wird in Ihrem project-Verzeichnis erscheinen. Doppelklicken Sie im Dateiexplorer auf pie_chart.png, um sie zu öffnen und Ihr erstes Tortendiagramm anzuzeigen.

Pie chart

Explosionseffekt mit dem Parameter 'explode' hinzufügen

In diesem Schritt lernen Sie, wie Sie einen bestimmten Sektor des Tortendiagramms hervorheben können, indem Sie ihn "explodieren" lassen. Das bedeutet, ihn leicht vom Zentrum des Kreises abzuheben. Dies wird mit dem Parameter explode in der Funktion pie() erreicht.

Der Parameter explode erwartet ein Tupel oder eine Liste mit der gleichen Länge wie Ihre sizes-Daten. Jeder Wert im Tupel gibt den Bruchteil des Radius an, um den jeder Sektor verschoben wird. Ein Wert von 0 bedeutet, dass der Sektor an seinem Platz bleibt, während ein Wert ungleich Null wie 0.1 ihn nach außen verschiebt.

Wir werden main.py ändern, um den 'Hogs'-Sektor zu explodieren. Wir speichern die Ausgabe auch in einer neuen Datei, pie_chart_explode.png, um sie mit der vorherigen zu vergleichen.

Aktualisieren Sie Ihre Datei main.py mit dem folgenden Code:

import matplotlib.pyplot as plt

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)  ## only "explode" the 2nd slice (i.e. 'Hogs')

## Create a figure and a set of subplots
fig, ax = plt.subplots()

## Plot the pie chart with explode effect
ax.pie(sizes, explode=explode, labels=labels)

## Save the figure to a file
plt.savefig('/home/labex/project/pie_chart_explode.png')

print("Pie chart with explode effect saved to pie_chart_explode.png")

Führen Sie nun das aktualisierte Skript vom Terminal aus:

python3 main.py

Sie werden diese Ausgabe sehen:

Pie chart with explode effect saved to pie_chart_explode.png

Eine neue Datei pie_chart_explode.png befindet sich nun in Ihrem Projektverzeichnis. Öffnen Sie sie, um zu sehen, wie der 'Hogs'-Sektor leicht vom Rest des Tortendiagramms abgetrennt ist.

Pie chart with explode effect

Prozentangaben mit autopct='%1.1f%%' anzeigen

In diesem Schritt fügen Sie jedem Sektor Beschriftungen mit den Prozentwerten hinzu, um das Diagramm informativer zu gestalten. Dies kann mit dem Parameter autopct erfolgen.

Der Parameter autopct akzeptiert eine Formatierungszeichenkette, die bestimmt, wie der Prozentwert für jeden Sektor angezeigt wird. Zum Beispiel formatiert '%1.1f%%' die Zahl als Gleitkommazahl mit einer Dezimalstelle, gefolgt von einem Prozentzeichen. Die %% am Ende sind notwendig, um ein wörtliches %-Symbol anzuzeigen.

Aktualisieren wir main.py, um die Prozentsätze einzuschließen. Wir speichern das Ergebnis in pie_chart_percent.png.

import matplotlib.pyplot as plt

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)  ## only "explode" the 2nd slice (i.e. 'Hogs')

## Create a figure and a set of subplots
fig, ax = plt.subplots()

## Plot the pie chart with explode and percentage
ax.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%')

## Save the figure to a file
plt.savefig('/home/labex/project/pie_chart_percent.png')

print("Pie chart with percentages saved to pie_chart_percent.png")

Führen Sie das Skript erneut von Ihrem Terminal aus:

python3 main.py

Die Ausgabe wird sein:

Pie chart with percentages saved to pie_chart_percent.png

Öffnen Sie nun pie_chart_percent.png im Dateiexplorer. Sie werden sehen, dass jeder Sektor nun seinen Prozentwert darauf angezeigt bekommt.

Pie chart with percentages

Schatten mit shadow=True setzen

In diesem letzten Schritt fügen Sie dem Tortendiagramm einen Schatten hinzu, um ihm ein leichtes 3D-Aussehen zu verleihen. Dies geschieht einfach durch Setzen des Parameters shadow auf True.

Kombinieren wir alle gelernten Funktionen: explode, autopct und shadow. Wir speichern das endgültige Diagramm als pie_chart_final.png.

Aktualisieren Sie Ihre Datei main.py mit dem vollständigen Code:

import matplotlib.pyplot as plt

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)  ## only "explode" the 2nd slice (i.e. 'Hogs')

## Create a figure and a set of subplots
fig, ax = plt.subplots()

## Plot the final pie chart with all features
ax.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
        shadow=True, startangle=90)

## Equal aspect ratio ensures that pie is drawn as a circle.
ax.axis('equal')

## Save the figure to a file
plt.savefig('/home/labex/project/pie_chart_final.png')

print("Final pie chart saved to pie_chart_final.png")

In dieser endgültigen Version haben wir auch startangle=90 hinzugefügt, um den Startpunkt des Tortendiagramms um 90 Grad gegen den Uhrzeigersinn zu drehen, und ax.axis('equal'), um sicherzustellen, dass das Tortendiagramm als perfekter Kreis gezeichnet wird.

Führen Sie das Skript ein letztes Mal aus:

python3 main.py

Die Ausgabe wird sein:

Final pie chart saved to pie_chart_final.png

Öffnen Sie pie_chart_final.png, um Ihr abgeschlossenes, voll ausgestattetes Tortendiagramm mit einem explodierten Sektor, Prozentbeschriftungen und einem Schatten zu sehen.

Final pie chart

Zusammenfassung

Herzlichen Glückwunsch zum Abschluss des Labs! Sie haben erfolgreich gelernt, wie man Tortendiagramme mit Matplotlib in Python erstellt und anpasst.

In diesem Lab haben Sie gelernt:

  • Daten (Beschriftungen und Größen) für ein Tortendiagramm vorzubereiten.
  • Ein einfaches Tortendiagramm mit plt.pie() zu erstellen.
  • Ein Matplotlib-Diagramm mit plt.savefig() in eine Bilddatei zu speichern.
  • Einen Sektor mit dem Parameter explode hervorzuheben.
  • Prozentwerte auf den Sektoren mit dem Parameter autopct anzuzeigen.
  • Einen visuellen 3D-Effekt mit dem Parameter shadow=True hinzuzufügen.

Sie sind nun mit den grundlegenden Fähigkeiten ausgestattet, um informative und visuell ansprechende Tortendiagramme für Ihre Datenvisualisierungsprojekte zu erstellen.