logo

Bar Plot în Matplotlib

Un diagramă cu bare sau un grafic cu bare este un grafic care reprezintă categoria de date cu bare dreptunghiulare cu lungimi și înălțimi proporționale cu valorile pe care le reprezintă. Graficele cu bare pot fi trasate orizontal sau vertical. O diagramă cu bare descrie comparațiile dintre categoriile discrete. Una dintre axe ale graficului reprezintă categoriile specifice care sunt comparate, în timp ce cealaltă axă reprezintă valorile măsurate corespunzătoare acestor categorii.

Crearea unui grafic de bare

The matplotlib API în Python oferă funcția bar() care poate fi utilizată în utilizarea stilului MATLAB sau ca API orientat pe obiecte. Sintaxa funcției bar() care trebuie utilizată cu axele este următoarea:

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

Funcția creează un grafic cu bare mărginit cu un dreptunghi în funcție de parametrii dați. În continuare este un exemplu simplu de diagramă cu bare, care reprezintă numărul de studenți înscriși la diferite cursuri ale unui institut.



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

>

>

ieșire-

Aici plt.bar(courses, values, color=’maroon’) este folosit pentru a specifica faptul că diagrama cu bare urmează să fie trasată utilizând coloana cursuri ca axa X și valorile ca axa Y. Atributul color este folosit pentru a seta culoarea barelor (maro în acest caz).plt.xlabel(Cursuri oferite) și plt.ylabel(studenti înscriși) sunt folosite pentru a eticheta axele corespunzătoare.plt.title() este folosit pentru creați un titlu pentru graph.plt.show() este folosit pentru a afișa graficul ca rezultat folosind comenzile anterioare.

Personalizarea graficului de bare

Python3




actualizare java

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

>

>

Ieșire:

cheia primară și cheia compusă în sql

Se observă în graficul cu bare de mai sus că căpușele axei X se suprapun unele pe altele, astfel încât nu pot fi văzute corect. Astfel, rotind căpușele axei X, acesta poate fi vizibil clar. De aceea este necesară personalizarea în graficele cu bare.

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

>

>

Ieșire:

Există multe mai multe personalizări disponibile pentru diagramele cu bare.

Mai multe diagrame de bare

Diagramele cu bare multiple sunt utilizate atunci când comparația între setul de date trebuie făcută atunci când o variabilă se schimbă. Îl putem converti cu ușurință ca diagramă cu bare cu suprafață stivuită, în care fiecare subgrup este afișat de unul deasupra celorlalți. Acesta poate fi reprezentat prin modificarea grosimii și poziției barelor. Următorul grafic cu bare arată numărul de studenți promovați la ramura de inginerie:

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

>

>

Ieșire:

Stivuire bar plot

Graficele cu bare stivuite reprezintă grupuri diferite unul peste altul. Înălțimea barei depinde de înălțimea rezultată a combinației rezultatelor grupurilor. Merge de la jos la valoare în loc să treacă de la zero la valoare. Următorul grafic cu bare reprezintă contribuția băieților și fetelor în echipă.

Python3


tabel de reacții



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

>

>

ieșire-