logo

Bar Plot v Matplotlib

Palični grafikon ali palični grafikon je graf, ki predstavlja kategorijo podatkov s pravokotnimi palicami z dolžinami in višinami, ki so sorazmerne z vrednostmi, ki jih predstavljajo. Palične ploskve lahko narišete vodoravno ali navpično. Palični grafikon opisuje primerjave med ločenimi kategorijami. Ena od osi grafa predstavlja specifične kategorije, ki se primerjajo, medtem ko druga os predstavlja izmerjene vrednosti, ki ustrezajo tem kategorijam.

Ustvarjanje bar parcele

The matplotlib API v Pythonu ponuja funkcijo bar(), ki se lahko uporablja v slogu MATLAB ali kot objektno usmerjen API. Sintaksa funkcije bar(), ki se uporablja z osemi, je naslednja:-

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

Funkcija ustvari palični izris, omejen s pravokotnikom glede na podane parametre. Sledi preprost primer stolpičnega grafa, ki predstavlja število študentov, vpisanih v različne tečaje inštituta.



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

>

>

Izhod-

Tukaj je plt.bar(courses, values, color=’maroon’) uporabljen za določitev, da je treba stolpčni grafikon izrisati z uporabo stolpca s tečaji kot X-osi in vrednosti kot Y-osi. Atribut barve se uporablja za nastavitev barve palic (v tem primeru kostanjeva).plt.xlabel(Ponujeni tečaji) in plt.ylabel(vpisani študenti) se uporabljata za označevanje ustreznih osi.plt.title() se uporablja za naredi naslov za graph.plt.show() se uporablja za prikaz grafa kot izhoda z uporabo prejšnjih ukazov.

Prilagajanje bar plot

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

>

>

Izhod:

Na zgornjem stolpčnem grafu je opaziti, da se kljukice osi X med seboj prekrivajo, zato ni mogoče pravilno videti. Tako je z vrtenjem kljukic osi X jasno viden. Zato je potrebna prilagoditev paličnih grafov.

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

java niz v json

>

>

Izhod:

Na voljo je veliko več prilagoditev za črtne ploskve.

Več bar parcel

Več stolpčnih grafov se uporablja, kadar je treba opraviti primerjavo med naborom podatkov, ko se spreminja ena spremenljivka. Preprosto ga lahko pretvorimo kot palični grafikon z zloženimi površinami, kjer je vsaka podskupina prikazana ena nad drugo. Lahko se nariše s spreminjanjem debeline in položaja palic. Naslednji stolpični grafikon prikazuje število študentov, opravljenih v inženirski smeri:

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

>

>

Izhod:

Zložena barska parcela

Zložene palične ploskve predstavljajo različne skupine eno na drugi. Višina palice je odvisna od končne višine kombinacije rezultatov skupin. Gre od dna do vrednosti namesto od nič do vrednosti. Naslednji stolpec predstavlja prispevek fantov in deklet v ekipi.

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

>

>

Izhod-