Plotly.graph_objects.Dispersione

Plotly.graph_objects.Dispersione
A seconda del tuo ambiente, rendono traccia le tue cifre utilizzando un browser web. Un browser Web supporta le funzionalità di rendering API SVG e WebGL. SVG Rendering utilizza il rendering vettoriale mentre WebGL utilizza l'API Canvas, un rendering più veloce utilizzando GPU e l'API WebGL.

In genere, non noterai la differenza tra la figura resa SVG e WebGL a meno che tu non stia pianificando una grande quantità di set di dati. Questo perché WebGL è progettato per gestire grandi quantità di calcolo utilizzando la GPU.

In questo articolo, tenteremo di mostrarti come utilizzare la classe Scattergl da Plotly Graph_Objects per tracciare un diagramma a dispersione usando WebGL.

Trama 1 milione di punti usando Plotly Express

Sebbene Plotly Graph_Objects fornisca molta personalizzazione e controllo di basso livello, è bene capire il metodo più rapido ed efficiente per creare un grafico reso WebGL.

Questo è dove arriva la trama espressa. Utilizzando il parametro Render_Mode, è possibile creare un diagramma a dispersione e raccontare a Plocking di utilizzare WebGL anziché SVG per rendere una figura.

Un esempio è come mostrato nel seguente:

importazione della trama.esprimere come px
Importa Numpy come NP
Importa panda come PD
n = 100000
df = pd.DataFrame (dict (
x = np.casuale.Randn (N),
y = np.casuale.Randn (N)
)
FIG = px.SPIREST (df, x = 'x', y = 'y')
Fico.spettacolo()

Il codice precedente crea un diagramma a dispersione di 10000 punti utilizzando il rendering WebGL.

Usando Plotly Graph_Objects

Fortunatamente, in Plotly Graph_Objects, possiamo usare la funzione Scattergl che utilizza il WebGL per impostazione predefinita.

Il codice di esempio è come mostrato nel seguente:

importazione della trama.graph_objects come Go
Importa Numpy come NP
n = 100000
FIG = GO.Figura()
Fico.add_trace (
andare.Dispersione (
x = np.casuale.Randn (N),
y = np.casuale.Randn (N),
modalità = 'marker'
)
)
Fico.spettacolo()

Render Time (SVG vs WebGL)

Come accennato, WebGL offre un vantaggio di prestazioni su SVG. Questo può essere illustrato quando si traccia un set di dati di grandi dimensioni.

Esempio 1: usando Scattergl

importazione della trama.graph_objects come Go
Importa Numpy come NP
n = 10000000
FIG = GO.Figura()
Fico.add_trace (
andare.Dispersione (
x = np.casuale.Randn (N),
y = np.casuale.Randn (N),
modalità = 'marker'
)
)
Fico.spettacolo()

Il codice precedente rende circa 3m 8.3 secondi.

Esempio 2: senza WebGL

importazione della trama.esprimere come px
Importa Numpy come NP
Importa panda come PD
n = 10000000
df = pd.DataFrame (dict (
x = np.casuale.Randn (N),
y = np.casuale.Randn (N)
)
FIG = px.SPIREST (df, x = 'x', y = 'y')
Fico.spettacolo()

Questo codice rende in circa 5 minuti 12.5secs.

Tieni presente che i valori precedenti sono di una volta ma non riflettono accuratamente il vantaggio di WebGL su SVG e viceversa.

Ti consigliamo di eseguire il tuo test che corrisponda al tuo ambiente e alle esigenze di calcolo.

Conclusione

In questo articolo, abbiamo illustrato come possiamo creare un diagramma a dispersione utilizzando SVG e WebGL rendering in Plotly.