Tramamente.Graph_objects.Dispersión

Tramamente.Graph_objects.Dispersión
Dependiendo de su entorno, Plotly presenta sus cifras con un navegador web. Un navegador web admite las capacidades de representación de SVG API y WebGL. SVG Rendering utiliza la representación vectorial mientras WebGL usa API de lona, ​​representación más rápida usando GPU y la API WebGL.

Por lo general, no notará la diferencia entre la cifra de SVG y WebGL renderizada a menos que esté trazando una gran cantidad de conjunto de datos. Esto se debe a que WebGL está diseñado para manejar grandes cantidades de computación mediante el uso de la GPU.

En este artículo, intentaremos mostrarle cómo usar la clase ScatterGL de Plotly Graph_Objects para trazar una gráfica de dispersión usando WebGL.

Trazar 1 millón de puntos usando Plotly Express

Aunque Plotly Graph_objects proporciona una gran personalización y control de bajo nivel, es bueno comprender el método más rápido y eficiente para crear una trama Rendered WebGL.

Aquí es donde entra Plotly Express. Usando el parámetro Render_Mode, puede crear una gráfica de dispersión y decirle a Plotly que use WebGL en lugar de SVG para representar una cifra.

Un ejemplo es como se muestra en el siguiente:

Importar trama.expresar como PX
importar numpy como np
importar pandas como PD
n = 100000
DF = PD.DataFrame (dict (
x = NP.aleatorio.Randn (N),
y = NP.aleatorio.Randn (N)
))
Fig = PX.dispersión (df, x = 'x', y = 'y')
higo.espectáculo()

El código anterior crea una gráfica de dispersión de 10000 puntos utilizando el renderizador webgl.

Usando trazar gráfico_objects

Afortunadamente, en tramly graph_objects, podemos usar la función scattergl que usa el webgl de forma predeterminada.

El código de ejemplo es como se muestra en el siguiente:

Importar trama.Graph_Objects como Go
importar numpy como np
n = 100000
Fig = GO.Cifra()
higo.add_trace (
ir.Scattergl (
x = NP.aleatorio.Randn (N),
y = NP.aleatorio.Randn (N),
modo = 'marcadores'
)
)
higo.espectáculo()

Renderice el tiempo (SVG vs WebGL)

Como se mencionó, WebGL ofrece una ventaja de rendimiento sobre SVG. Esto se puede ilustrar al trazar un gran conjunto de datos.

Ejemplo 1: Uso de scattergl

Importar trama.Graph_Objects como Go
importar numpy como np
n = 10000000
Fig = GO.Cifra()
higo.add_trace (
ir.Scattergl (
x = NP.aleatorio.Randn (N),
y = NP.aleatorio.Randn (N),
modo = 'marcadores'
)
)
higo.espectáculo()

El código anterior representa en aproximadamente 3m 8.3 segundos.

Ejemplo 2: sin webgl

Importar trama.expresar como PX
importar numpy como np
importar pandas como PD
n = 10000000
DF = PD.DataFrame (dict (
x = NP.aleatorio.Randn (N),
y = NP.aleatorio.Randn (N)
))
Fig = PX.dispersión (df, x = 'x', y = 'y')
higo.espectáculo()

Este código se produce en aproximadamente 5 minutos 12.5 segundos.

Tenga en cuenta que los valores anteriores son de una sola vez, pero no reflejan con precisión la ventaja de WebGL sobre SVG y viceversa.

Le recomendamos que haga su prueba que coincida con sus necesidades de entorno y cálculo.

Conclusión

En este artículo, ilustramos cómo podemos crear una trama de dispersión usando SVG y WebGL Rendering en Plotly.