Balkendiagramm in Matplotlib
Ein Balkendiagramm oder Balkendiagramm ist ein Diagramm, das die Datenkategorie mit rechteckigen Balken darstellt, deren Länge und Höhe proportional zu den von ihnen dargestellten Werten ist. Die Balkendiagramme können horizontal oder vertikal dargestellt werden. Ein Balkendiagramm beschreibt die Vergleiche zwischen den einzelnen Kategorien. Eine der Achsen des Diagramms stellt die spezifischen Kategorien dar, die verglichen werden, während die andere Achse die Messwerte darstellt, die diesen Kategorien entsprechen.
Erstellen eines Balkendiagramms
Der matplotlib Die API in Python bietet die Funktion bar(), die im MATLAB-Stil oder als objektorientierte API verwendet werden kann. Die Syntax der Funktion bar(), die mit den Achsen verwendet werden soll, lautet wie folgt:
plt.bar(x, height, width, bottom, align)
Die Funktion erstellt abhängig von den angegebenen Parametern ein durch ein Rechteck begrenztes Balkendiagramm. Im Folgenden finden Sie ein einfaches Beispiel für das Balkendiagramm, das die Anzahl der Studierenden darstellt, die in verschiedenen Kursen eines Instituts eingeschrieben sind.
Python3
import> numpy as np> import> matplotlib.pyplot as plt> > # creating the dataset> data> => {> 'C'> :> 20> ,> 'C++'> :> 15> ,> 'Java'> :> 30> ,> > 'Python'> :> 35> }> courses> => list> (data.keys())> values> => list> (data.values())> > fig> => plt.figure(figsize> => (> 10> ,> 5> ))> # creating the bar plot> plt.bar(courses, values, color> => 'maroon'> ,> > width> => 0.4> )> plt.xlabel(> 'Courses offered'> )> plt.ylabel(> 'No. of students enrolled'> )> plt.title(> 'Students enrolled in different courses'> )> plt.show()> |
Ausgabe-
Hier wird plt.bar(courses, value, color=’maroon’) verwendet, um anzugeben, dass das Balkendiagramm unter Verwendung der Kursspalte als X-Achse und der Werte als Y-Achse dargestellt werden soll. Das Farbattribut wird verwendet, um die Farbe der Balken festzulegen (in diesem Fall kastanienbraun). plt.xlabel(Angebotene Kurse) und plt.ylabel(eingeschriebene Studenten) werden verwendet, um die entsprechenden Achsen zu kennzeichnen.plt.title() wird dazu verwendet Erstellen Sie einen Titel für das Diagramm.plt.show() wird verwendet, um das Diagramm mit den vorherigen Befehlen als Ausgabe anzuzeigen.
Anpassen des Balkendiagramms
Python3
import> pandas as pd> from> matplotlib> import> pyplot as plt> # Read CSV into pandas> data> => pd.read_csv(r> 'cars.csv'> )> data.head()> df> => pd.DataFrame(data)> name> => df[> 'car'> ].head(> 12> )> price> => df[> 'price'> ].head(> 12> )> # Figure Size> fig> => plt.figure(figsize> => (> 10> ,> 7> ))> # Horizontal Bar Plot> plt.bar(name[> 0> :> 10> ], price[> 0> :> 10> ])> # Show Plot> plt.show()> |
Ausgabe:
Im obigen Balkendiagramm ist zu erkennen, dass sich die Markierungen auf der X-Achse überlappen und daher nicht richtig angezeigt werden können. Durch Drehen der X-Achsen-Häkchen kann es somit deutlich sichtbar werden. Aus diesem Grund ist eine Anpassung der Balkendiagramme erforderlich.
Python3
import> pandas as pd> from> matplotlib> import> pyplot as plt> # Read CSV into pandas> data> => pd.read_csv(r> 'cars.csv'> )> data.head()> df> => pd.DataFrame(data)> name> => df[> 'car'> ].head(> 12> )> price> => df[> 'price'> ].head(> 12> )> # Figure Size> fig, ax> => plt.subplots(figsize> => (> 16> ,> 9> ))> # Horizontal Bar Plot> ax.barh(name, price)> # Remove axes splines> for> s> in> [> 'top'> ,> 'bottom'> ,> 'left'> ,> 'right'> ]:> > ax.spines[s].set_visible(> False> )> # Remove x, y Ticks> ax.xaxis.set_ticks_position(> 'none'> )> ax.yaxis.set_ticks_position(> 'none'> )> # Add padding between axes and labels> ax.xaxis.set_tick_params(pad> => 5> )> ax.yaxis.set_tick_params(pad> => 10> )> # Add x, y gridlines> ax.grid(b> => True> , color> => 'grey'> ,> > linestyle> => '-.'> , linewidth> => 0.5> ,> > alpha> => 0.2> )> # Show top values> ax.invert_yaxis()> # Add annotation to bars> for> i> in> ax.patches:> > plt.text(i.get_width()> +> 0.2> , i.get_y()> +> 0.5> ,> > str> (> round> ((i.get_width()),> 2> )),> > fontsize> => 10> , fontweight> => 'bold'> ,> > color> => 'grey'> )> # Add Plot Title> ax.set_title(> 'Sports car and their price in crore'> ,> > loc> => 'left'> , )> # Add Text watermark> fig.text(> 0.9> ,> 0.15> ,> 'Jeeteshgavande30'> , fontsize> => 12> ,> > color> => 'grey'> , ha> => 'right'> , va> => 'bottom'> ,> > alpha> => 0.7> )> # Show Plot> plt.show()> |
Ausgabe:
Es stehen viele weitere Anpassungen für Balkendiagramme zur Verfügung.
Mehrere Balkendiagramme
Mehrere Balkendiagramme werden verwendet, wenn ein Vergleich zwischen den Datensätzen durchgeführt werden soll, wenn sich eine Variable ändert. Wir können es problemlos in ein gestapeltes Flächenbalkendiagramm umwandeln, in dem jede Untergruppe übereinander angezeigt wird. Es kann durch Variation der Dicke und Position der Balken dargestellt werden. Das folgende Balkendiagramm zeigt die Anzahl der bestandenen Studierenden im Ingenieurbereich:
Python3
import> numpy as np> import> matplotlib.pyplot as plt> # set width of bar> barWidth> => 0.25> fig> => plt.subplots(figsize> => (> 12> ,> 8> ))> # set height of bar> IT> => [> 12> ,> 30> ,> 1> ,> 8> ,> 22> ]> ECE> => [> 28> ,> 6> ,> 16> ,> 5> ,> 10> ]> CSE> => [> 29> ,> 3> ,> 24> ,> 25> ,> 17> ]> # Set position of bar on X axis> br1> => np.arange(> len> (IT))> br2> => [x> +> barWidth> for> x> in> br1]> br3> => [x> +> barWidth> for> x> in> br2]> # Make the plot> plt.bar(br1, IT, color> => 'r'> , width> => barWidth,> > edgecolor> => 'grey'> , label> => 'IT'> )> plt.bar(br2, ECE, color> => 'g'> , width> => barWidth,> > edgecolor> => 'grey'> , label> => 'ECE'> )> plt.bar(br3, CSE, color> => 'b'> , width> => barWidth,> > edgecolor> => 'grey'> , label> => 'CSE'> )> # Adding Xticks> plt.xlabel(> 'Branch'> , fontweight> => 'bold'> , fontsize> => 15> )> plt.ylabel(> 'Students passed'> , fontweight> => 'bold'> , fontsize> => 15> )> plt.xticks([r> +> barWidth> for> r> in> range> (> len> (IT))],> > [> '2015'> ,> '2016'> ,> '2017'> ,> '2018'> ,> '2019'> ])> plt.legend()> plt.show()> |
Ausgabe:
Gestapeltes Balkendiagramm
Gestapelte Balkendiagramme stellen verschiedene Gruppen übereinander dar. Die Höhe des Balkens hängt von der resultierenden Höhe der Kombination der Ergebnisse der Gruppen ab. Es geht von unten zum Wert, anstatt von Null zum Wert. Das folgende Balkendiagramm stellt den Beitrag der Jungen und Mädchen im Team dar.
Python3
import> numpy as np> import> matplotlib.pyplot as plt> N> => 5> boys> => (> 20> ,> 35> ,> 30> ,> 35> ,> 27> )> girls> => (> 25> ,> 32> ,> 34> ,> 20> ,> 25> )> boyStd> => (> 2> ,> 3> ,> 4> ,> 1> ,> 2> )> girlStd> => (> 3> ,> 5> ,> 2> ,> 3> ,> 3> )> ind> => np.arange(N)> width> => 0.35> fig> => plt.subplots(figsize> => (> 10> ,> 7> ))> p1> => plt.bar(ind, boys, width, yerr> => boyStd)> p2> => plt.bar(ind, girls, width,> > bottom> => boys, yerr> => girlStd)> plt.ylabel(> 'Contribution'> )> plt.title(> 'Contribution by the teams'> )> plt.xticks(ind, (> 'T1'> ,> 'T2'> ,> 'T3'> ,> 'T4'> ,> 'T5'> ))> plt.yticks(np.arange(> 0> ,> 81> ,> 10> ))> plt.legend((p1[> 0> ], p2[> 0> ]), (> 'boys'> ,> 'girls'> ))> plt.show()> |
Ausgabe-