logo

Bar Plot i Matplotlib

Ett stapeldiagram eller stapeldiagram är ett diagram som representerar kategorin av data med rektangulära staplar med längder och höjder som är proportionella mot de värden som de representerar. Staplarna kan plottas horisontellt eller vertikalt. Ett stapeldiagram beskriver jämförelserna mellan de diskreta kategorierna. En av axlarna i diagrammet representerar de specifika kategorierna som jämförs, medan den andra axeln representerar de uppmätta värdena som motsvarar dessa kategorier.

Skapa en bartomt

De matplotlib API i Python tillhandahåller bar()-funktionen som kan användas i MATLAB-stilanvändning eller som ett objektorienterat API. Syntaxen för bar()-funktionen som ska användas med axlarna är som följer:-

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

Funktionen skapar ett stapeldiagram avgränsat med en rektangel beroende på de givna parametrarna. Följande är ett enkelt exempel på stapeldiagrammet, som representerar antalet studenter som är inskrivna i olika kurser på ett institut.



Python3

för loopar java




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

>

>

Produktion-

Här används plt.bar(courses, values, color=’maroon’) för att specificera att stapeldiagrammet ska plottas genom att använda kurskolumnen som X-axel, och värdena som Y-axel. Color-attributet används för att ställa in färgen på staplarna (rödbrun i det här fallet). make a title för graph.plt.show() används för att visa grafen som utdata med de föregående kommandona.

Anpassa bartomten

Python3

inkapslingsprogram




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

>

>

Produktion:

Det observeras i stapeldiagrammet ovan att X-axelns fästingar överlappar varandra så att de inte kan ses ordentligt. Genom att vrida på X-axeln kan den alltså synas tydligt. Därför krävs anpassning i stapeldiagram.

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

>

>

Produktion:

Det finns många fler anpassningar tillgängliga för bartomter.

Flera bartomter

Flera stapeldiagram används när jämförelser mellan datamängden ska göras när en variabel ändras. Vi kan enkelt konvertera det till ett staplat områdesstapeldiagram, där varje undergrupp visas med en ovanpå de andra. Det kan plottas genom att variera tjockleken och placeringen av stängerna. Följande stapeldiagram visar antalet godkända studenter i ingenjörsgrenen:

Python3


intellij idé vs eclipse



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

>

>

Produktion:

Staplad bartomt

Staplade stapeldiagram representerar olika grupper ovanpå varandra. Höjden på stapeln beror på den resulterande höjden av kombinationen av resultaten från grupperna. Det går från botten till värdet istället för att gå från noll till värde. Följande stapeldiagram representerar bidraget från pojkar och flickor i laget.

int att dubbla

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

>

>

Produktion-