Plotly - Box Plot Violin Plot e Contour Plot

Este capítulo se concentra na compreensão de detalhes sobre vários gráficos, incluindo gráfico de caixa, gráfico de violino, gráfico de contorno e gráfico de aljava. Inicialmente, começaremos com o Box Plot a seguir.

Box Plot

Um gráfico de caixa exibe um resumo de um conjunto de dados contendo o mínimo, first quartile, median, third quartile, e maximum. Em um gráfico de caixa, desenhamos uma caixa do primeiro quartil ao terceiro quartil. Uma linha vertical atravessa a caixa na mediana. As linhas que se estendem verticalmente das caixas indicando variabilidade fora dos quartis superior e inferior são chamadas de bigodes. Portanto, o gráfico de caixa também é conhecido como caixa ewhisker plot. Os bigodes vão de cada quartil para o mínimo ou máximo.

Para desenhar o gráfico Box, temos que usar go.Box()função. A série de dados pode ser atribuída ao parâmetro x ou y. Consequentemente, o gráfico de caixa será desenhado horizontalmente ou verticalmente. No exemplo a seguir, os números de vendas de uma determinada empresa em seus vários ramos são convertidos em box plot horizontal. Mostra a mediana do valor mínimo e máximo.

trace1 = go.Box(y = [1140,1460,489,594,502,508,370,200])
data = [trace1]
fig = go.Figure(data)
iplot(fig)

A saída do mesmo será a seguinte -

o go.Box()A função pode receber vários outros parâmetros para controlar a aparência e o comportamento do gráfico de caixa. Um deles é o parâmetro boxmean.

o boxmeanparâmetro é definido como verdadeiro por padrão. Como resultado, a média da distribuição subjacente das caixas é desenhada como uma linha tracejada dentro das caixas. Se for definido como sd, o desvio padrão da distribuição também será desenhado.

o boxpoints parâmetro é por padrão igual a "outliers". Apenas os pontos de amostra situados fora dos bigodes são mostrados. Se" suspeitos de outliers ", os pontos discrepantes são mostrados e os pontos menores que 4" Q1-3 "Q3 ou maiores que 4" Q3-3 "Q1 são destacados. Se" False ", apenas a (s) caixa (s) são mostradas sem pontos de amostra.

No exemplo a seguir, o box trace é desenhado com desvio padrão e pontos discrepantes.

trc = go.Box(
   y = [
      0.75, 5.25, 5.5, 6, 6.2, 6.6, 6.80, 7.0, 7.2, 7.5, 7.5, 7.75, 8.15,
      8.15, 8.65, 8.93, 9.2, 9.5, 10, 10.25, 11.5, 12, 16, 20.90, 22.3, 23.25
   ],
   boxpoints = 'suspectedoutliers', boxmean = 'sd'
)
data = [trc]
fig = go.Figure(data)
iplot(fig)

O resultado do mesmo é declarado abaixo -

Enredo de violino

Os gráficos de violino são semelhantes aos gráficos de caixa, exceto que também mostram a densidade de probabilidade dos dados em valores diferentes. Os gráficos de violino incluirão um marcador para a mediana dos dados e uma caixa indicando o intervalo interquartil, como nos gráficos de caixa padrão. Sobreposto a este gráfico de caixa está uma estimativa da densidade do kernel. Como os gráficos de caixa, os gráficos de violino são usados ​​para representar a comparação de uma distribuição de variável (ou distribuição de amostra) em diferentes "categorias".

Um enredo de violino é mais informativo do que um enredo de caixa simples. Na verdade, enquanto um gráfico de caixa mostra apenas estatísticas resumidas, como média / mediana e intervalos interquartis, o gráfico de violino mostra ofull distribution of the data.

Objeto de rastreamento de violino é retornado por go.Violin() função em graph_objectsmódulo. A fim de exibir o box plot subjacente, oboxplot_visibleatributo é definido como True. Da mesma forma, definindomeanline_visible como true, uma linha correspondente à média da amostra é mostrada dentro dos violinos.

O exemplo a seguir demonstra como o gráfico de violino é exibido usando a funcionalidade do gráfico.

import numpy as np
np.random.seed(10)
c1 = np.random.normal(100, 10, 200)
c2 = np.random.normal(80, 30, 200)
trace1 = go.Violin(y = c1, meanline_visible = True)
trace2 = go.Violin(y = c2, box_visible = True)
data = [trace1, trace2]
fig = go.Figure(data = data)
iplot(fig)

O resultado é o seguinte -

Gráfico de contorno

Um gráfico de contorno 2D mostra as linhas de contorno de uma matriz numérica 2D z, ou seja, linhas interpoladas de isovaluesde z. Uma linha de contorno de uma função de duas variáveis ​​é uma curva ao longo da qual a função tem um valor constante, de forma que a curva junta pontos de igual valor.

Um gráfico de contorno é apropriado se você quiser ver como algum valor Z muda em função de duas entradas, X e Y de tal modo que Z = f(X,Y). Uma linha de contorno ou isolinha de uma função de duas variáveis ​​é uma curva ao longo da qual a função tem um valor constante.

As variáveis ​​independentes xey são geralmente restritas a uma grade regular chamada meshgrid. O numpy.meshgrid cria uma grade retangular a partir de uma matriz de valores xe uma matriz de valores y.

Vamos primeiro criar valores de dados para x, y e z usando linspace()função da biblioteca Numpy. Nós criamos ummeshgrid dos valores xey e obter a matriz z consistindo na raiz quadrada de x2+y2

Nós temos go.Contour() função em graph_objects módulo que leva x,y e zatributos. O trecho de código a seguir exibe o gráfico de contorno de x,y e z valores calculados como acima.

import numpy as np
xlist = np.linspace(-3.0, 3.0, 100)
ylist = np.linspace(-3.0, 3.0, 100)
X, Y = np.meshgrid(xlist, ylist)
Z = np.sqrt(X**2 + Y**2)
trace = go.Contour(x = xlist, y = ylist, z = Z)
data = [trace]
fig = go.Figure(data)
iplot(fig)

O resultado é o seguinte -

O gráfico de contorno pode ser personalizado por um ou mais dos seguintes parâmetros -

  • Transpose (boolean) - Transpõe os dados z.

E se xtype (ou ytype) é igual a "matriz", as coordenadas x / y são fornecidas por "x" / "y". Se for "dimensionado", as coordenadas x são fornecidas por "x0" e "dx"

  • o connectgaps parâmetro determina se as lacunas nos dados z são preenchidas ou não.

  • Valor padrão de ncontoursO parâmetro é 15. O número real de contornos será escolhido automaticamente para ser menor ou igual ao valor de `ncontours`. Tem efeito apenas se `autocontour` for" True ".

O tipo de contorno é por padrão: "levels"para que os dados sejam representados como um gráfico de contorno com vários níveis exibidos. constrain, os dados são representados como restrições com a região inválida sombreada conforme especificado pelo operation e value parâmetros.

showlines - Determina se as linhas de contorno são desenhadas ou não.

zauto é True por padrão e determina se o domínio da cor é ou não calculado em relação aos dados de entrada (aqui em `z`) ou os limites definidos em`zmin`e`zmax`O padrão é`False`quando` zmin` e `zmax` são definidos pelo usuário.

Quiver plot

O enredo Quiver também é conhecido como velocity plot. Ele exibe vetores de velocidade como setas com componentes (u,v) nos pontos (x, y). A fim de desenhar o gráfico Quiver, usaremoscreate_quiver() função definida em figure_factory módulo em Plotly.

A API Python do Plotly contém um módulo de fábrica de figuras que inclui muitas funções de empacotador que criam tipos de gráfico exclusivos que ainda não estão incluídos plotly.js, A biblioteca gráfica de código aberto do Plotly.

A função create_quiver () aceita os seguintes parâmetros -

  • x - coordenadas x das localizações das setas

  • y - coordenadas y das localizações das setas

  • u - x componentes dos vetores de seta

  • v - componentes y dos vetores de seta

  • scale - dimensiona o tamanho das setas

  • arrow_scale - comprimento da ponta da flecha.

  • angle - ângulo da ponta da seta.

O código a seguir renderiza um gráfico de quiver simples no notebook Jupyter -

import plotly.figure_factory as ff
import numpy as np
x,y = np.meshgrid(np.arange(-2, 2, .2), np.arange(-2, 2, .25))
z = x*np.exp(-x**2 - y**2)
v, u = np.gradient(z, .2, .2)

# Create quiver figure
fig = ff.create_quiver(x, y, u, v,
scale = .25, arrow_scale = .4,
name = 'quiver', line = dict(width = 1))
iplot(fig)

A saída do código é a seguinte -