logo

Box Plot a Python mitjançant Matplotlib

A Plot de caixa també es coneix com Trama de bigotis es crea per mostrar el resum del conjunt de valors de dades amb propietats com mínim, primer quartil, mediana, tercer quartil i màxim. En el diagrama de caixa, es crea una caixa des del primer quartil fins al tercer quartil, també hi ha una línia vertical que passa per la caixa a la mitjana. Aquí l'eix x indica les dades que s'han de representar mentre que l'eix y mostra la distribució de freqüència.

Creació de Box Plot

El mòdul matplotlib.pyplot de la biblioteca matplotlib proporciona la funció boxplot() amb l'ajuda de la qual podem crear diagrames de caixa.



Sintaxi:

matplotlib.pyplot.boxplot(dades, notch=Cap, vert=Cap, patch_artist=Cap, amples=Cap)

Paràmetres:



Atribut Valor
dades matriu o seqüència de matriu que s'ha de representar
osca El paràmetre opcional accepta valors booleans
Verd El paràmetre opcional accepta valors booleans fals i true per a la trama horitzontal i vertical respectivament
bootstrap El paràmetre opcional accepta int especifica intervals al voltant dels diagrames de caixa amb osques
usuaris mitjans El paràmetre opcional accepta matriu o seqüència de dimensió de matriu compatible amb les dades
posicions El paràmetre opcional accepta la matriu i estableix la posició de les caixes
amplades El paràmetre opcional accepta la matriu i estableix l'amplada de les caixes
patch_artist paràmetre opcional amb valors booleans
etiquetes seqüència de conjunts de cadenes etiqueta per a cada conjunt de dades
línia mitjana opcional que tingui un valor booleà, intenteu representar la línia mitjana com a amplada completa del quadre
ordre el paràmetre opcional estableix l'ordre del diagrama de caixa

Els valors de dades donats al mètode ax.boxplot() poden ser una matriu Numpy o una llista Python o una tupla de matrius. Creem el diagrama de caixa utilitzant numpy.random.normal() per crear algunes dades aleatòries, es pren la mitjana, la desviació estàndard i el nombre desitjat de valors com a arguments.

Exemple:

Python 3






# Import libraries> import> matplotlib.pyplot as plt> import> numpy as np> # Creating dataset> np.random.seed(>10>)> data>=> np.random.normal(>100>,>20>,>200>)> fig>=> plt.figure(figsize>=>(>10>,>7>))> # Creating plot> plt.boxplot(data)> # show plot> plt.show()>

>

>

Sortida:

box-plot-python

Personalització de Box Plot

El matplotlib.pyplot.boxplot() ofereix infinites possibilitats de personalització al diagrama de caixa. L'atribut notch = True crea el format de notch al diagrama de caixa, patch_artist = True omple el diagrama de caixa amb colors, podem establir diferents colors a diferents caixes. L'atribut vert = 0 crea un diagrama de caixa horitzontal. les etiquetes prenen les mateixes dimensions que els conjunts de dades de nombres.

Exemple 1:

java convertint nombre enter en cadena

Python 3




# Import libraries> import> matplotlib.pyplot as plt> import> numpy as np> # Creating dataset> np.random.seed(>10>)> data_1>=> np.random.normal(>100>,>10>,>200>)> data_2>=> np.random.normal(>90>,>20>,>200>)> data_3>=> np.random.normal(>80>,>30>,>200>)> data_4>=> np.random.normal(>70>,>40>,>200>)> data>=> [data_1, data_2, data_3, data_4]> fig>=> plt.figure(figsize>=>(>10>,>7>))> # Creating axes instance> ax>=> fig.add_axes([>0>,>0>,>1>,>1>])> # Creating plot> bp>=> ax.boxplot(data)> # show plot> plt.show()>

>

>

Sortida:

box-plot-python

Exemple 2: Intentem modificar la trama anterior amb algunes de les personalitzacions:

Python 3




# Import libraries> import> matplotlib.pyplot as plt> import> numpy as np> # Creating dataset> np.random.seed(>10>)> data_1>=> np.random.normal(>100>,>10>,>200>)> data_2>=> np.random.normal(>90>,>20>,>200>)> data_3>=> np.random.normal(>80>,>30>,>200>)> data_4>=> np.random.normal(>70>,>40>,>200>)> data>=> [data_1, data_2, data_3, data_4]> fig>=> plt.figure(figsize>=>(>10>,>7>))> ax>=> fig.add_subplot(>111>)> # Creating axes instance> bp>=> ax.boxplot(data, patch_artist>=> True>,> >notch>=>'True'>, vert>=> 0>)> colors>=> [>'#0000FF'>,>'#00FF00'>,> >'#FFFF00'>,>'#FF00FF'>]> for> patch, color>in> zip>(bp[>'boxes'>], colors):> >patch.set_facecolor(color)> # changing color and linewidth of> # whiskers> for> whisker>in> bp[>'whiskers'>]:> >whisker.>set>(color>=>'#8B008B'>,> >linewidth>=> 1.5>,> >linestyle>=>':'>)> # changing color and linewidth of> # caps> for> cap>in> bp[>'caps'>]:> >cap.>set>(color>=>'#8B008B'>,> >linewidth>=> 2>)> # changing color and linewidth of> # medians> for> median>in> bp[>'medians'>]:> >median.>set>(color>=>'red'>,> >linewidth>=> 3>)> # changing style of fliers> for> flier>in> bp[>'fliers'>]:> >flier.>set>(marker>=>'D'>,> >color>=>'#e7298a'>,> >alpha>=> 0.5>)> > # x-axis labels> ax.set_yticklabels([>'data_1'>,>'data_2'>,> >'data_3'>,>'data_4'>])> # Adding title> plt.title(>'Customized box plot'>)> # Removing top axes and right axes> # ticks> ax.get_xaxis().tick_bottom()> ax.get_yaxis().tick_left()> > # show plot> plt.show()>

>

>

Sortida:

box-plot-python