Election presidentielle 2017

Jupyter Notebook – Balkendiagramm erstellen

Nach den Tutorials zum Kreisdiagramm und dem Liniendiagramm fehlt nun noch das Balkendiagramm. Dieser Typus wird insbesondere gerne für Wahlergebnisse verwendet. Und da aktuell in Frankreich die Präsidentschaftswahlen stattfinden, bietet es sich an, das (vorläufige) Ergebnis zu diesem Ereignis – mithilfe von Python 3 und Matplotlib – grafisch darzustellen. Dabei kann teilweise auf den Code der anderen Beispiele zurückgegriffen werden, so dass ich insofern nicht im Detail darauf eingehen werde.

Zunächst müssen die erforderlichen Bibliotheken importiert werden:

import matplotlib.pyplot as plt
import numpy as np

Auch in diesem Beispiel soll wieder ein Subplot genutzt werden:

fig, ax = plt.subplots()

Nun definieren wir die Kandidaten, die dazugehörigen Werte und die Farben der Balken (die den Farben der Parteien bzw. der Bewegung entsprechen sollen).

candidats = ('Marine Le Pen', 'Emmanuel Macron', 'François Fillon', 'Benoît Hamon', 'Jean-Luc Mélenchon')
voter = [21.7,23.9,20,6.3,19.2]
y_pos = np.arange(len(candidats))
couleur = ['#000000', '#dbb243', '#2e42d3', '#e54fe3', '#f23434']

Außerdem soll die Grafik einen Titel und Beschriftungen für die X- und die Y-Achse haben.

plt.title('Election presidentielle 2017')
plt.ylabel('Vote en %')
plt.xlabel("Candidats")

Auf der Basis der bisherigen Angaben muss die Grafik auch erstellt werden:

plt.bar(y_pos, voter, align='center', alpha=0.6, color=couleur)

Dabei wird mit

alpha = 0.6

die Deckkraft der Farben der Balken festgelegt.

Die Werte (Kandidaten) für die X-Achse sollten ebenfalls angezeigt und ausgerichtet werden:

ax.set_xticks(range(len(candidats)))
ax.set_xticklabels(candidats, rotation='vertical')

Und mit

plt.show()

wird die Grafik schließlich auch dargestellt. Darüber hinaus würde die Zeile

plt.savefig('election_presidentielle.png')

dazu führen, dass das Balkendiagramm als PNG-Datei gespeichert wird.

Balkenbeschriftung hinzufügen

Es wäre schön, wenn oberhalb der Balken die Prozentzahlen stehen würden. Dies lässt sich mithilfe einer Funktion erreichen, die ich der Dokumentation zu Matplotlib entnommen habe:

def autolabel(rects):
# attach some text labels
for rect in rects:
    height = rect.get_height()
    ax.text(rect.get_x() + rect.get_width()/2., height + 1,
            '%.1f' % float(height),
            ha='center', va='bottom')

autolabel(c_rects)

Aus der Zeile

plt.bar(y_pos, voter, align='center', alpha=0.6, color=couleur)

wird dann dementsprechend:

c_rects = plt.bar(y_pos, voter, align='center', alpha=0.6, color=couleur)

Es kann hierbei passieren, dass eine Balkenbeschriftung außerhalb der oberen Grafikbegrenzung liegt. In diesem Fall könnte man noch die Höhe der Y-Achse beispielsweise mit plt.ylim(0, 30) anpassen.

Wie üblich gibt es den kompletten Code zum Download bei Github.

Durch Benutzung dieser Website erklären Sie sich mit der Verwendung von Cookies einverstanden. Mehr Informationen

Die Verwendung von Cookies dient dazu, Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf diese Website zu analysieren. Außerdem werden Informationen zur Nutzung dieser Webseite an Partner für soziale Medien, Werbung und Analysen weitergegeben.

Schließen