logo

Działka barowa w Matplotlib

Wykres słupkowy lub wykres słupkowy to wykres przedstawiający kategorię danych za pomocą prostokątnych słupków o długości i wysokości proporcjonalnej do wartości, które reprezentują. Wykresy słupkowe można wykreślać poziomo lub pionowo. Wykres słupkowy opisuje porównania pomiędzy odrębnymi kategoriami. Jedna z osi wykresu przedstawia poszczególne porównywane kategorie, natomiast druga oś przedstawia zmierzone wartości odpowiadające tym kategoriom.

Tworzenie wykresu słupkowego

The matplotlib API w Pythonie udostępnia funkcję bar(), której można używać w stylu MATLAB-a lub jako obiektowego API. Składnia funkcji bar() używanej z osiami jest następująca:



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

Funkcja tworzy wykres słupkowy ograniczony prostokątem w zależności od podanych parametrów. Poniżej znajduje się prosty przykład wykresu słupkowego, który przedstawia liczbę studentów zapisanych na różne kursy w instytucie.

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

>

>

Wyjście-

co to jest prolog

Tutaj plt.bar(kursy, wartości, kolor=’maroon’) służy do określenia, czy wykres słupkowy ma być wykreślony przy użyciu kolumny kursów jako osi X i wartości jako osi Y. Atrybut color służy do ustawiania koloru słupków (w tym przypadku bordowy). plt.xlabel (oferowane kursy) i plt.ylabel (zapisani studenci) służą do oznaczania odpowiednich axes.plt.title() służy do oznaczania utwórz tytuł dla graph.plt.show() służy do pokazywania wykresu jako wyniku za pomocą poprzednich poleceń.

Dostosowywanie wykresu słupkowego

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

>

>

Wyjście:

Na powyższym wykresie słupkowym widać, że znaczniki osi X nakładają się na siebie, w związku z czym nie można ich prawidłowo zobaczyć. Zatem obracając znaczniki osi X, można to wyraźnie zobaczyć. Dlatego wymagane jest dostosowanie wykresów słupkowych.

Python3


klasa abstrakcyjna w Javie



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

>

>

Wyjście:

Istnieje wiele innych dostosowań dostępnych dla wykresów słupkowych.

Wiele wykresów słupkowych

Wykresy słupkowe są używane, gdy porównanie zbioru danych ma nastąpić w przypadku zmiany jednej zmiennej. Możemy go łatwo przekonwertować na skumulowany wykres słupkowy, na którym każda podgrupa jest wyświetlana jedna nad drugą. Można to wykreślić, zmieniając grubość i położenie prętów. Poniższy wykres słupkowy przedstawia liczbę studentów zdanych na kierunku inżynierskim:

Python3


alternatywy dla watchcartoononline.io



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

>

>

Wyjście:

Skumulowany wykres słupkowy

Skumulowane wykresy słupkowe reprezentują różne grupy jedna na drugiej. Wysokość słupka zależy od wysokości wynikowej kombinacji wyników grup. Przechodzi od dołu do wartości, zamiast przechodzić od zera do wartości. Poniższy wykres słupkowy przedstawia wkład chłopców i dziewcząt w drużynę.

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

>

>

Wyjście-