logo

Barplot in Matplotlib

Een staafdiagram of staafdiagram is een grafiek die de categorie gegevens weergeeft met rechthoekige staven waarvan de lengte en hoogte evenredig zijn aan de waarden die ze vertegenwoordigen. De staafdiagrammen kunnen horizontaal of verticaal worden uitgezet. Een staafdiagram beschrijft de vergelijkingen tussen de afzonderlijke categorieën. Eén van de assen van de grafiek vertegenwoordigt de specifieke categorieën die worden vergeleken, terwijl de andere as de gemeten waarden vertegenwoordigt die overeenkomen met die categorieën.

Een staafdiagram maken

De matplotlib API in Python biedt de functie bar() die kan worden gebruikt in MATLAB-stijl of als objectgeoriënteerde API. De syntaxis van de functie bar() die met de assen moet worden gebruikt, is als volgt:

plt.bar(x, height, width, bottom, align)>

De functie creëert een staafdiagram begrensd door een rechthoek, afhankelijk van de gegeven parameters. Hieronder volgt een eenvoudig voorbeeld van het staafdiagram, dat het aantal studenten weergeeft dat is ingeschreven voor verschillende cursussen van een instituut.



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()>

>

>

Uitvoer-

soorten testen

Hier wordt plt.bar(courses, value, color=’maroon’) gebruikt om te specificeren dat het staafdiagram moet worden geplot door de koerskolom als X-as te gebruiken en de waarden als Y-as. Het kleurattribuut wordt gebruikt om de kleur van de balken in te stellen (in dit geval kastanjebruin).plt.xlabel(Aangeboden cursussen) en plt.ylabel(ingeschreven studenten) worden gebruikt om de overeenkomstige assen te labelen.plt.title() wordt gebruikt om maak een titel voor de grafiek.plt.show() wordt gebruikt om de grafiek als uitvoer weer te geven met behulp van de voorgaande opdrachten.

Het barplot aanpassen

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()>

>

Python rstrip
>

Uitgang:

In het bovenstaande staafdiagram is te zien dat de markeringen op de X-as elkaar overlappen en dus niet goed zichtbaar zijn. Door de vinkjes op de X-as te draaien, kan dit dus duidelijk zichtbaar zijn. Daarom is maatwerk in staafdiagrammen vereist.

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()>

>

>

Uitgang:

converteer boolean naar string

Er zijn nog veel meer aanpassingen beschikbaar voor barplots.

Meerdere barplots

Er worden meerdere staafdiagrammen gebruikt wanneer een vergelijking tussen de dataset moet worden uitgevoerd wanneer één variabele verandert. We kunnen het eenvoudig omzetten als een gestapeld staafdiagram, waarbij elke subgroep boven op de andere wordt weergegeven. Het kan worden uitgezet door de dikte en positie van de staven te variëren. Het volgende staafdiagram toont het aantal geslaagde studenten in de technische sector:

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()>

>

>

Uitgang:

Gestapeld staafdiagram

Gestapelde staafdiagrammen vertegenwoordigen verschillende groepen boven elkaar. De hoogte van de balk is afhankelijk van de resulterende hoogte van de combinatie van de resultaten van de groepen. Het gaat van de onderkant naar de waarde in plaats van van nul naar waarde. Het volgende staafdiagram geeft de bijdrage weer van jongens en meisjes in het team.

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()>

>

Java-schijfje

>

Uitvoer-