Im nächsten Teil unserer Matplotlib Serie zeichnen wir eine Tortengrafik am Beispiel der Fläche der Bundesländer von Österreich. Wir heben das größte Land optisch hervor und nehmen diverse Designänderungen vor. Sehen wir uns das fertige Bild zunächst an.
Zu Beginn importieren wir zunächst wieder das Matplotlib Modul. Anschließend legen wir zwei Listen an. In der ersten Liste werden die Namen der neun Bundesländer von Österreich gespeichert. In der zweiten Liste sind die jeweiligen Werte für die Landflächeeb in km² definiert. Um das größte Bundesland, Niederösterreich, hervorheben zu können, setzen wir in der Liste explode
an der dritten Stelle einen Wert für den Abstand vom Rest der Grafik.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# Zeichenmodul importieren import matplotlib.pyplot as plt # Bezeichnungen der Länder labels = ['Burgenland', 'Kärnten', 'Niederösterreich', 'Oberösterreich', 'Salzburg', 'Steiermark', 'Tirol', 'Vorarlberg', 'Wien'] # Flächen im km² für die einzelnen Länder sizes = [3965.20, 9536.55, 19179.26, 11982.59, 7154.58, 16398.76, 12648.34, 2601.66, 414.75] # Größtes Land Hervorheben explode = [0,0,0.1,0,0,0,0,0,0] |
Für die Erstellung der Tortengrafik benötigen wir ein axes
Objekt, auf das wir anschließend die pie()
Funktion anwenden können (Link zur Funktionsbeschreibung). Dazu führen wir zuerst plt.subplots()
aus und erhalten ein Tupel als Rückgabewert. Diese Tupel enthält unser benötigtes Objekt. Bei die Ausführung von pie()
können zahlreiche Parameter übergeben werden. Wir benötigen in erster Linie unsere drei zuvor definierten Listen labels
, sizes
uns explode
. Mit autopct
formatieren wir die Prozentangaben in den Tortenstücken als Fließkommazahl mit einer Nachkommastelle. Mit pctdistance
legen wir den Abstand der Prozentangaben vom Mittelpunkt des Kreises fest.
1 2 3 4 5 6 7 8 9 10 |
# Subplot erstellen, Figur - und Achsenobjekt zurückgeben figure, axes = plt.subplots() # Kuchengrafik zeichnen, Listen mit Teilstücken, Ländernamen # und Prozentangaben zurückgeben patches, texts, autotexts = axes.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', pctdistance=0.8) |
Um einzelne Elemente der Grafik nachträglich ändern zu können, benötigen wir die zurückgegebenen Listen patches
, texts
und autotexts
. Als erstes färben wir den Namen des größten Bundeslandes rot. Anschließend stellen wir sicher, dass die Prozentangabe von Wien deutlich gelesen werden kann. Dazu erhöhen wir die x Position des Textes um 0.65. Dieser Wert wurde durch Ausprobieren ermittelt. Um einer bessere Kontrastwirkung zu erzielen, färben wir alle Prozentangaben weiß. Dabei lassen wir den Wert für Wien natürlich aus.
Damit unsere Grafik absolut Kreisförmig dargestellt wird, setzen wir das Attribut "equal"
für die Funktion axis()
. Zum Anzeigen des fertigen Bildes benötigen wir zum Schluss noch die Funktion plt.show()
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# Text 'Niederösterreich' rot färben texts[2].set_color('r') # Prozentangabe für Wien um 0.65 nach rechts verschieben xpos, ypos = autotexts[8].get_position() autotexts[8].set_position((xpos + 0.65, ypos)) # Prozentangaben weiß färben (außer Wien) for i, v in enumerate(autotexts): if i != 8: v.set_color('w') # Beide Achsen gleich lang setzen axes.axis('equal') # Grafik anzeigen plt.show() |
Das Beispiel kann mit folgendem Befehl ausgeführt werden:
python3 matplotlib_torte.py
Das komplette Beispiel herunterladen: matplotlib_torte.zip
Hinterlasse jetzt einen Kommentar