logo

Parcel·la de bar a Matplotlib

Un diagrama de barres o diagrama de barres és un gràfic que representa la categoria de dades amb barres rectangulars amb longituds i altures que és proporcional als valors que representen. Els diagrames de barres es poden traçar horitzontalment o verticalment. Un gràfic de barres descriu les comparacions entre les categories discretes. Un dels eixos de la trama representa les categories específiques que es comparen, mentre que l'altre eix representa els valors mesurats corresponents a aquestes categories.

Creació d'una trama de barres

El matplotlib L'API en Python proporciona la funció bar() que es pot utilitzar en l'ús de l'estil MATLAB o com a API orientada a objectes. La sintaxi de la funció bar() que s'utilitzarà amb els eixos és la següent:



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

La funció crea una gràfica de barres limitada amb un rectangle en funció dels paràmetres donats. A continuació es mostra un exemple senzill de la trama de barres, que representa el nombre d'estudiants matriculats en diferents cursos d'un institut.

Python 3








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

>

>

Sortida-

Aquí plt.bar(courses, values, color='maroon') s'utilitza per especificar que el gràfic de barres s'ha de representar utilitzant la columna de cursos com a eix X i els valors com a eix Y. L'atribut color s'utilitza per establir el color de les barres (granat en aquest cas). plt.xlabel(Cursos oferts) i plt.ylabel(estudiants matriculats) s'utilitzen per etiquetar els axes corresponents.plt.title() s'utilitza per fer un títol per al graph.plt.show() s'utilitza per mostrar el gràfic com a sortida mitjançant les ordres anteriors.

Personalització de la trama de barres

Python 3




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

>

>

Sortida:

S'observa al gràfic de barres anterior que les paparres de l'eix X s'estan superposant entre si, de manera que no es poden veure correctament. Així, fent girar les paparres de l'eix X, es pot veure clarament. Per això és necessària la personalització en gràfics de barres.

Python 3




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

>

>

Sortida:

Hi ha moltes més personalitzacions disponibles per a les trames de barres.

Múltiples trames de barres

S'utilitzen múltiples gràfics de barres quan s'ha de fer una comparació entre el conjunt de dades quan una variable està canviant. El podem convertir fàcilment com a gràfic de barres d'àrea apilada, on cada subgrup es mostra un sobre els altres. Es pot traçar variant el gruix i la posició de les barres. El següent gràfic de barres mostra el nombre d'estudiants aprovats a la branca d'enginyeria:

Python 3




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

>

>

Sortida:

enter a doble java

Parcel·la de barres apilades

Les trames de barres apilades representen diferents grups uns sobre els altres. L'alçada de la barra depèn de l'alçada resultant de la combinació dels resultats dels grups. Va de baix al valor en lloc de passar de zero al valor. El següent diagrama de barres representa l'aportació dels nois i noies a l'equip.

Python 3




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

>

>

Sortida-