Plotly - Plot Box Plot Violino e Contour Plot

Questo capitolo si concentra sulla comprensione dei dettagli di vari grafici tra cui box plot, violin plot, contour plot e quiver plot. Inizialmente, inizieremo con il Box Plot che segue.

Box Plot

Un box plot visualizza un riepilogo di un insieme di dati contenente il minimo, first quartile, median, third quartile, e maximum. In un box plot, disegniamo un riquadro dal primo quartile al terzo quartile. Una linea verticale attraversa la scatola in corrispondenza della mediana. Le linee che si estendono verticalmente dalle caselle che indicano la variabilità al di fuori dei quartili superiore e inferiore sono chiamate baffi. Quindi, box plot è anche noto come box ewhisker plot. I baffi vanno da ogni quartile al minimo o massimo.

Per disegnare il grafico a scatola, dobbiamo usare go.Box()funzione. La serie di dati può essere assegnata al parametro x o y. Di conseguenza, il box plot verrà disegnato orizzontalmente o verticalmente. Nell'esempio seguente, i dati di vendita di una determinata azienda nelle sue varie filiali vengono convertiti in box plot orizzontali. Mostra la mediana del valore minimo e massimo.

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

L'output dello stesso sarà il seguente:

Il go.Box()alla funzione possono essere assegnati vari altri parametri per controllare l'aspetto e il comportamento del box plot. Uno di questi è il parametro boxmean.

Il boxmeanil parametro è impostato su true per impostazione predefinita. Di conseguenza, la media della distribuzione sottostante delle caselle viene tracciata come una linea tratteggiata all'interno delle caselle. Se è impostato su sd, viene tracciata anche la deviazione standard della distribuzione.

Il boxpoints il parametro è per impostazione predefinita uguale a "outliers". Vengono mostrati solo i punti campione che si trovano al di fuori dei baffi. Se" sospetti valori anomali ", vengono visualizzati i punti anomali e vengono evidenziati i punti inferiori a 4" Q1-3 "Q3 o superiori a 4" Q3-3 "Q1. Se" Falso ", vengono mostrate solo le caselle senza punti campione.

Nell'esempio seguente, il box trace viene disegnato con deviazione standard e punti anomali.

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)

L'output dello stesso è indicato di seguito -

Trama di violino

I grafici del violino sono simili ai grafici a scatole, tranne per il fatto che mostrano anche la densità di probabilità dei dati a valori diversi. I grafici del violino includeranno un marker per la mediana dei dati e un riquadro che indica l'intervallo interquartile, come nei box plot standard. Sovrapposta a questo box plot c'è una stima della densità del kernel. Come i box plot, i grafici per violino vengono utilizzati per rappresentare il confronto di una distribuzione variabile (o distribuzione campione) tra diverse "categorie".

La trama di un violino è più istruttiva di una semplice trama a scatola. Infatti, mentre un box plot mostra solo statistiche riassuntive come media / mediana e intervalli interquartili, il grafico del violino mostra ilfull distribution of the data.

L'oggetto Violin trace viene restituito da go.Violin() funzione in graph_objectsmodulo. Per visualizzare il box plot sottostante, il fileboxplot_visiblel'attributo è impostato su True. Allo stesso modo, impostandomeanline_visible proprietà su true, una linea corrispondente alla media del campione viene mostrata all'interno dei violini.

L'esempio seguente mostra come la trama di Violino viene visualizzata utilizzando la funzionalità di 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)

L'output è il seguente:

Trama di contorno

Un contour plot 2D mostra le curve di livello di un array numerico 2D z, ovvero le linee interpolate di isovaluesdi z. Una linea di contorno di una funzione di due variabili è una curva lungo la quale la funzione ha un valore costante, in modo che la curva unisce punti di uguale valore.

Un contour plot è appropriato se si desidera vedere come cambia un valore Z in funzione di due input, X e Y tale che Z = f(X,Y). Una linea di contorno o isolinea di una funzione di due variabili è una curva lungo la quale la funzione ha un valore costante.

Le variabili indipendenti x e y sono solitamente limitate a una griglia regolare chiamata meshgrid. Il numpy.meshgrid crea una griglia rettangolare da un array di valori x e un array di valori y.

Creiamo prima i valori dei dati per x, yez usando linspace()funzione dalla libreria Numpy. Creiamo un filemeshgrid dai valori xey e ottieni un array z costituito dalla radice quadrata di x2+y2

abbiamo go.Contour() funzione in graph_objects modulo che prende x,y e zattributi. Lo snippet di codice seguente mostra il diagramma di contorno di x,y e z valori calcolati come sopra.

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)

L'output è il seguente:

Il contour plot può essere personalizzato da uno o più dei seguenti parametri:

  • Transpose (boolean) - Traspone i dati z.

Se xtype (o ytype) è uguale a "array", le coordinate x / y sono date da "x" / "y". Se "scalato", le coordinate x sono date da "x0" e "dx".

  • Il connectgaps determina se gli spazi vuoti nei dati z vengono riempiti o meno.

  • Valore predefinito di ncontoursil parametro è 15. Il numero effettivo di contorni verrà scelto automaticamente in modo che sia minore o uguale al valore di "ncontours". Ha effetto solo se "autocontour" è "True".

Il tipo di contorni è per impostazione predefinita: "levels"in modo che i dati vengano rappresentati come un diagramma di contorno con più livelli visualizzati. Se constrain, i dati sono rappresentati come vincoli con la regione non valida ombreggiata come specificato da operation e value parametri.

showlines - Determina se disegnare o meno le curve di livello.

zauto è True per impostazione predefinita e determina se il dominio del colore è calcolato o meno rispetto ai dati di input (qui in "z") o ai limiti impostati in "zmin"e"zmax`Il valore predefinito è`False`quando` zmin` e `zmax` sono impostati dall'utente.

Trama faretra

La trama della faretra è anche conosciuta come velocity plot. Visualizza i vettori di velocità come frecce con componenti (u,v) nei punti (x, y). Per disegnare la trama di Quiver, useremocreate_quiver() funzione definita in figure_factory modulo in Plotly.

L'API Python di Plotly contiene un modulo di fabbrica di figure che include molte funzioni wrapper che creano tipi di grafici unici che non sono ancora inclusi in plotly.js, La libreria grafica open source di Plotly.

La funzione create_quiver () accetta i seguenti parametri:

  • x - coordinate x delle posizioni delle frecce

  • y - coordinate y delle posizioni delle frecce

  • u - x componenti dei vettori freccia

  • v - y componenti dei vettori freccia

  • scale - scala la dimensione delle frecce

  • arrow_scale - lunghezza della punta della freccia.

  • angle - angolo della punta della freccia.

Il seguente codice rende un semplice grafico della faretra nel 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)

L'output del codice è il seguente: