O que é Box Plot?
Um Box plot é uma forma de visualizar a distribuição dos dados usando uma caixa e algumas linhas verticais. É conhecido como gráfico do bigode. Os dados podem ser distribuídos entre cinco intervalos principais, que são os seguintes:
Aqui o IQR representa o Intervalo Interquartil que começa no primeiro quartil (Q1) e termina no terceiro quartil (Q3).
Visualização Box Plot
No box plot, os pontos que estão fora do intervalo são chamados de outliers. Podemos criar o box plot dos dados para determinar o seguinte:
- O número de outliers em um conjunto de dados
- Os dados estão distorcidos ou não
- O intervalo dos dados
O intervalo dos dados do mínimo ao máximo é chamado de limite de whisker. Em Python, usaremos o módulo pyplot do módulo matplotlib, que possui uma função embutida chamada boxplot() que pode criar o box plot de qualquer conjunto de dados.
Sintaxe:
matplotlib.pyplot.boxplot(data,notch=none,vert=none,patch_artist,widths=none)
Na função boxplot(), temos vários atributos que podem ser usados para criar um box plot mais atraente e surpreendente do conjunto de dados.
Exemplo 1:
Criaremos o conjunto de dados aleatórios do array numpy e criaremos o box plot.
import matplotlib.pyplot as plt import numpy as np np.random.seed(15) dataSet = np.random.normal(100, 25, 200) print(dataSet) figure = plt.figure(figsize =(10, 8)) plt.boxplot(dataSet) plt.show()
Saída:
Explicação:
No código acima, em primeiro lugar, importamos as bibliotecas numpy e matplotlib no código. Em seguida, criamos o conjunto de dados aleatório e traçamos o box plot usando a função boxplot().
Exemplo2:
Podemos criar vários box plots simultaneamente no mesmo arquivo.
import matplotlib.pyplot as plt import numpy as np np.random.seed(10) dataSet1 = np.random.normal(100, 10, 220) dataSet2 = np.random.normal(80, 20, 200) dataSet3 = np.random.normal(60, 35, 220) dataSet4 = np.random.normal(50, 40, 200) dataSet = [dataSet1, dataSet2, dataSet3, dataSet4] figure = plt.figure(figsize =(10, 7)) ax = figure.add_axes([0, 0, 1, 1]) bp = ax.boxplot(dataSet) plt.show()
Saída:
Explicação:
No código acima, temos quatro conjuntos de dados usando métodos aleatórios de numpy. Em seguida, criamos a lista dos quatro conjuntos de dados e usamos isso dentro da função boxplot().
Exemplo 3:
Podemos usar alguns atributos da função boxplot() para personalizar o gráfico.
import matplotlib.pyplot as plt import numpy as np np.random.seed(10) dataSet1 = np.random.normal(100, 10, 220) dataSet2 = np.random.normal(80, 20, 200) dataSet3 = np.random.normal(60, 35, 220) dataSet4 = np.random.normal(50, 40, 200) dataSet = [dataSet1, dataSet2, dataSet3, dataSet4] figure = plt.figure(figsize =(10, 7)) ax = figure.add_subplot(111) bp = ax.boxplot(dataSet, patch_artist = True,notch ='True', vert = 0) colors = ['#00FF00','#0F00FF', '#F00FF0','#FFFF0F'] for patch, color in zip(bp['boxes'], colors): patch.set_facecolor(color) for whisker in bp['whiskers']: whisker.set(color ='#8E008B',linewidth = 1.4,linestyle =':') for cap in bp['caps']: cap.set(color ='#8E008B',linewidth = 2.1) for median in bp['medians']: median.set(color ='blue',linewidth = 3) for flier in bp['fliers']: flier.set(marker ='D',color ='#d7298c',alpha = 0.6) ax.set_yticklabels(['dataSet1', 'dataSet2','dataSet3', 'dataSet4']) plt.title('Customized box plot using attributes') ax.get_xaxis().tick_bottom() ax.get_yaxis().tick_left() plt.show()
Saída:
diferença entre leão e tigre
Explicação:
No código acima, criamos os quatro conjuntos de dados usando funções aleatórias e os colocamos em uma lista. Agora definimos as diferentes cores para cada box plot usando a lista de cores e usando a função set_facecolor().
Definimos a largura da linha de cada box plot e também definimos os rótulos para cada box plot. Definimos o atributo vert =0, o que significa que todos os gráficos estarão no modo horizontal.