logo

Baarijuonti Matplotlibissä

Pylväskaavio tai pylväskaavio on kaavio, joka edustaa tietoluokkaa suorakaiteen muotoisilla pylväillä, joiden pituus ja korkeus on verrannollinen niiden edustamiin arvoihin. Palkkikuvaajat voidaan piirtää vaaka- tai pystysuunnassa. Pylväskaavio kuvaa erillisten luokkien vertailut. Yksi käyrän akseli edustaa tiettyjä verrattavia luokkia, kun taas toinen akseli edustaa näitä luokkia vastaavia mittausarvoja.

Baarijuonen luominen

The matplotlib Pythonin API tarjoaa bar()-funktion, jota voidaan käyttää MATLAB-tyylikäytössä tai olio-sovellusliittymänä. Akseleiden kanssa käytettävän bar()-funktion syntaksi on seuraava:-

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

Funktio luo suorakulmiolla rajatun pylväskuvaajan annetuista parametreista riippuen. Seuraavassa on yksinkertainen esimerkki palkkikaaviosta, joka edustaa instituutin eri kursseille ilmoittautuneiden opiskelijoiden määrää.



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

>

>

Lähtö-

Tässä plt.bar(kursseja, arvoja, color=’maroon’) käytetään määrittämään, että pylväskaavio piirretään käyttämällä kurssisaraketta X-akselina ja arvoja Y-akselina. Colour-attribuuttia käytetään palkkien värin asettamiseen (tässä tapauksessa kastanjanruskea).plt.xlabel (Kurssit tarjotaan) ja plt.ylabel (opiskelijat ilmoittautuneet) käytetään merkitsemään vastaavat axes.plt.title():tä käytetään tee otsikko graph.plt.show()-komentoa käytetään näyttämään kaavio tulosteena käyttämällä aikaisempia komentoja.

Baarijuonen mukauttaminen

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

>

>

Lähtö:

Yllä olevasta pylväsdiagrammista havaitaan, että X-akselin rastit menevät päällekkäin, joten sitä ei voida nähdä kunnolla. Näin X-akselin punkkeja kiertämällä se näkyy selvästi. Tästä syystä pylväskaavioiden mukauttaminen on välttämätöntä.

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

>

>

Lähtö:

Baaritonteihin on saatavilla monia muita mukautuksia.

Useita bar tontteja

Useita pylväsdiagrammeja käytetään, kun tietojoukkoja vertaillaan yhden muuttujan muuttuessa. Voimme helposti muuntaa sen pinotuksi aluepylväskaavioksi, jossa jokainen alaryhmä näytetään yksitellen muiden päällä. Se voidaan piirtää muuttamalla tankojen paksuutta ja sijaintia. Seuraava pylväskaavio näyttää insinöörialan läpäisseiden opiskelijoiden määrän:

Python 3

muuta nimihakemistoa linux




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

>

>

Lähtö:

Pinottu baaritontti

Pinotut palkkikaaviot edustavat eri ryhmiä päällekkäin. Palkin korkeus riippuu tuloksena olevasta ryhmien tulosyhdistelmän korkeudesta. Se siirtyy alhaalta arvoon sen sijaan, että siirtyisi nollasta arvoon. Seuraava palkkikaavio edustaa poikien ja tyttöjen panosta joukkueessa.

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

>

>

Lähtö-