Plotly - Gráfico de caja Gráfico de violín y Gráfico de contorno

Este capítulo se centra en la comprensión detallada de varias tramas, incluida la trama de caja, la trama de violín, la trama de contorno y la trama de carcaj. Inicialmente, comenzaremos con el siguiente diagrama de caja.

Diagrama de caja

Un diagrama de caja muestra un resumen de un conjunto de datos que contiene el mínimo, first quartile, median, third quartiley maximum. En un diagrama de caja, dibujamos una caja desde el primer cuartil hasta el tercer cuartil. Una línea vertical atraviesa el cuadro en la mediana. Las líneas que se extienden verticalmente desde los cuadros que indican variabilidad fuera de los cuartiles superior e inferior se denominan bigotes. Por lo tanto, el diagrama de caja también se conoce como caja ywhisker plot. Los bigotes van de cada cuartil al mínimo o al máximo.

Para dibujar un gráfico de caja, tenemos que usar go.Box()función. La serie de datos se puede asignar al parámetro xoy. En consecuencia, el diagrama de caja se dibujará horizontal o verticalmente. En el siguiente ejemplo, las cifras de ventas de una determinada empresa en sus diversas sucursales se convierten en un diagrama de caja horizontal. Muestra la mediana del valor mínimo y máximo.

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

La salida de la misma será la siguiente:

los go.Box()A la función se le pueden dar varios otros parámetros para controlar la apariencia y el comportamiento del diagrama de caja. Uno de ellos es el parámetro boxmean.

los boxmeanEl parámetro está establecido en verdadero de forma predeterminada. Como resultado, la media de la distribución subyacente de los cuadros se dibuja como una línea discontinua dentro de los cuadros. Si se establece en sd, también se dibuja la desviación estándar de la distribución.

los boxpoints el parámetro es por defecto igual a "outliers". Solo se muestran los puntos de muestra que se encuentran fuera de los bigotes. Si se sospecha que son atípicos, se muestran los puntos atípicos y se resaltan los puntos inferiores a 4" Q1-3 "Q3 o superiores a 4" Q3-3 "Q1. Si" Falso ", solo se muestran las casillas sin puntos de muestra.

En el siguiente ejemplo, el box trace se dibuja con desviación estándar y puntos atípicos.

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)

La salida de la misma se indica a continuación:

Trama de violín

Los diagramas de violín son similares a los diagramas de caja, excepto que también muestran la densidad de probabilidad de los datos en diferentes valores. Los diagramas de violín incluirán un marcador para la mediana de los datos y un cuadro que indica el rango intercuartílico, como en los diagramas de caja estándar. Superpuesto en este diagrama de caja hay una estimación de la densidad del kernel. Al igual que los diagramas de caja, los diagramas de violín se utilizan para representar la comparación de una distribución variable (o distribución de muestra) entre diferentes "categorías".

Un diagrama de violín es más informativo que un diagrama de caja simple. De hecho, mientras que un diagrama de caja solo muestra estadísticas resumidas como media / mediana y rangos intercuartílicos, el diagrama de violín muestrafull distribution of the data.

El objeto de traza de violín es devuelto por go.Violin() funcionar en graph_objectsmódulo. Para mostrar el diagrama de caja subyacente, elboxplot_visibleatributo se establece en Verdadero. Del mismo modo, al establecermeanline_visible propiedad a verdadero, se muestra una línea correspondiente a la media de la muestra dentro de los violines.

El siguiente ejemplo demuestra cómo se muestra la trama de Violin utilizando la funcionalidad de plotly.

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)

La salida es la siguiente:

Dibujo de contorno

Un gráfico de contorno 2D muestra las líneas de contorno de una matriz numérica 2D z, es decir, líneas interpoladas de isovaluesde z. Una línea de contorno de una función de dos variables es una curva a lo largo de la cual la función tiene un valor constante, de modo que la curva une puntos de igual valor.

Un gráfico de contorno es apropiado si desea ver cómo cambia algún valor Z en función de dos entradas, X y Y tal que Z = f(X,Y). Una línea de contorno o isolínea de una función de dos variables es una curva a lo largo de la cual la función tiene un valor constante.

Las variables independientes xey generalmente se restringen a una cuadrícula regular llamada cuadrícula de malla. Numpy.meshgrid crea una cuadrícula rectangular a partir de una matriz de valores xy una matriz de valores y.

Primero creemos valores de datos para x, y y z usando linspace()función de la biblioteca Numpy. Creamos unmeshgrid a partir de los valores de xey y obtener una matriz z que consta de la raíz cuadrada de x2+y2

Tenemos go.Contour() funcionar en graph_objects módulo que toma x,y y zatributos. El siguiente fragmento de código muestra el gráfico de contorno de x,y y z valores calculados como arriba.

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)

La salida es la siguiente:

El gráfico de contorno se puede personalizar mediante uno o más de los siguientes parámetros:

  • Transpose (boolean) - Transpone los datos z.

Si xtype (o ytype) es igual a "matriz", las coordenadas x / y vienen dadas por "x" / "y". Si está "escalado", las coordenadas x vienen dadas por "x0" y "dx".

  • los connectgaps El parámetro determina si se rellenan o no los huecos en los datos z.

  • Valor predeterminado de ncontoursEl parámetro es 15. El número real de contornos se elegirá automáticamente para que sea menor o igual al valor de "ncontours". Tiene efecto solo si `autocontour` es" True ".

El tipo de contornos es el predeterminado: "levels"para que los datos se representen como un gráfico de contorno con varios niveles mostrados. Si constrain, los datos se representan como restricciones con la región no válida sombreada según lo especificado por el operation y value parámetros.

showlines - Determina si se dibujan o no las curvas de nivel.

zauto es True por defecto y determina si el dominio de color se calcula o no con respecto a los datos de entrada (aquí en `z`) o los límites establecidos en`zmin`y`zmax`Por defecto es`False`cuando el usuario establece` zmin` y `zmax`.

Trama de carcaj

La trama de carcaj también se conoce como velocity plot. Muestra los vectores de velocidad como flechas con componentes (u,v) en los puntos (x, y). Para dibujar el diagrama de Quiver, usaremoscreate_quiver() función definida en figure_factory módulo en Plotly.

La API de Python de Plotly contiene un módulo de fábrica de figuras que incluye muchas funciones de envoltura que crean tipos de gráficos únicos que aún no están incluidos en plotly.js, Biblioteca de gráficos de código abierto de Plotly.

La función create_quiver () acepta los siguientes parámetros:

  • x - coordenadas x de las ubicaciones de las flechas

  • y - coordenadas y de las ubicaciones de las flechas

  • u - x componentes de los vectores flecha

  • v - componentes y de los vectores de flecha

  • scale - tamaño de las escalas de las flechas

  • arrow_scale - longitud de la punta de flecha.

  • angle - ángulo de la punta de flecha.

El siguiente código representa un diagrama de carcaj simple en el cuaderno 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)

La salida del código es la siguiente: