Serie de ciencia de datos: Introducción a la visualización Plotly

guía

Al comienzo de ingresar la posición de datos, escribí una serie de tutoriales introductorios para varios conjuntos de herramientas de ciencia de datos, incluidos Numpy , Pandas , Matplotlib , Seaborn , Sklearn , etc., que también constituían mi pila de herramientas principal original. Entre estos 5 juegos de herramientas, 2.5 se utilizan para el trazado de datos (Pandas se puede contar como 0.5). La alta proporción está relacionada con la "indulgencia" en la visualización simple y efectiva en ese momento, y se puede decir que nunca me canso de eso. . Después de más de un año, después de estar en contacto constante con Plotly, un advenedizo de visualización, finalmente aprendí formalmente sobre el uso, las características, las ventajas y las desventajas de este paquete recientemente, y lo resolví un poco para aprender del futuro, así que escribió este artículo!

b17f7df6250a58be6384afed82d48ff4.png

Plotly es simple, eficiente e interactivo, ¡vale la pena intentarlo!

01 Por qué aprender ploteado

Plotly, el nombre de este paquete no es poco intuitivo, debe ser una herramienta para dibujar imágenes de un vistazo; pero al mismo tiempo, todavía no es intuitivo, porque plotly es en realidad una biblioteca de dibujo multilingüe, y cuando se trata de plotly A más la referencia probable es plotly en JavaScript. De hecho, plotly es una biblioteca de dibujo basada en JavaScript y luego se introdujo en Python, por lo que para referirse a plotly en Python de manera más específica, generalmente se puede llamar plotly.py.

5dfd90eef771a1618ec788ac873445ae.png

Plotly admite plataformas multilingües

Entonces, ¿por qué plotly no sigue la práctica de muchas bibliotecas de terceros en Python y lo nombra directamente pyplotly? Después de todo, existen muchos precedentes de este tipo, como pyecharts, pymysql, pytorch, etc.

Además, ¿por qué gastar costos de aprendizaje adicionales para comenzar con plotly después de dominar matplotlib y seaborn, que pueden completar casi todos los requisitos de dibujo? En otras palabras, ¿cuáles son las ventajas principales o los lugares insustituibles de plotly? En resumen: ¡Interactividad! Sí, el dibujo de plotly admite la interacción, que no está disponible en matplotlib y seaborn (más estrictamente hablando, no es interactivo por defecto).

Por supuesto, hay más de una biblioteca de dibujo interactivo, por ejemplo, ¡he probado pyecharts antes! Pero para mí, es solo que los resultados de dibujo de pyecharts necesitan abrir una página web separada, lo cual es un poco engorroso Al mismo tiempo, la sintaxis de dibujo de plotly es más cercana a matplotlib y seaborn, y el umbral de aprendizaje es más suave. Basado en las ricas actividades internas mencionadas anteriormente, elegí la trama y finalmente decidí estudiar sistemáticamente y probarlo.

02 ¿Qué puede hacer plotly?

Como biblioteca de visualización, plotly, por supuesto, se puede utilizar para dibujar imágenes, y es una variedad de ricos estilos de imágenes. Afortunadamente, aquí hay una referencia directa a la introducción del sitio web oficial de plotly:

La biblioteca plotly de Python es una biblioteca de gráficos interactiva y de código abierto que admite más de 40 tipos de gráficos únicos que cubren una amplia gama de casos de uso estadísticos, financieros, geográficos, científicos y tridimensionales.

Algunas palabras clave son: código abierto, interactivo, admite más de 40 tipos de gráficos, que abarcan estadísticas, finanzas, geografía, ciencia y gráficos 3D.

Eche un vistazo a la demostración de la tabla proporcionada directamente por el sitio web oficial:

c0a83f15ca0f759656ea5c3576eb4424.png

Serie de gráficos estadísticos y científicos

8ffc714e4471ad7c4be198e2ac61c73b.png

Serie de gráficos financieros y geográficos

a5954f65f5a2e7c0ee3cb56a0d2d4fe7.png

Serie de ciencia de IA

Se pueden ver más tipos de gráficos en el sitio web oficial. En resumen, plotly tiene funciones completas y potentes.

03 Cómo dibuja gráficamente

Dado que este artículo se posiciona como una serie de introducción, debe presentar cómo usar y comenzar.

En primer lugar, el proceso de instalación de la biblioteca plotly en python es muy simple y hay pocas dependencias (se encuentra a través de pip show plotly que solo hay 2 paquetes dependientes). Tanto pip como conda pueden completar rápidamente la instalación a través del método de instalación convencional.

En segundo lugar, se brinda una introducción general de cada módulo componente en plotly, para comprender la estructura macroscópica de plotly y el posicionamiento de cada módulo desde una perspectiva macro. Abra la carpeta del código fuente de plotly, puede ver que contiene principalmente las siguientes subcarpetas, que básicamente corresponden a varios submódulos en plotly:

75bc561c8762b99211ec8647b9fe8177.png

Además de la subcarpeta anterior, plotly tiene varios archivos .py independientes

Específicamente, los siguientes submódulos generalmente están involucrados en la aplicación de ploteo para visualización:

  • express: una API de alto nivel para visualización en plotly

  • graph_objects: la interfaz de dibujo subyacente, incluidos todos los diseños y objetos gráficos (graph_objs es un paquete con el mismo nombre)

  • io: interfaz de bajo nivel para mostrar, leer y escribir gráficos

  • colors: se utiliza para configurar el color del gráfico relacionado

  • datos: proporciona algunas funciones integradas de carga de conjuntos de datos, como iris, conjunto de datos de consejos

De hecho, para comenzar con plotly de manera muy simple y rápida, ¡tal vez solo necesite concentrarse en los dos submódulos de plotly.express y plotly.graph_objects! Antes del uso específico, primero introduzca la diferencia y el posicionamiento de los dos:

  • plotly.graph_objects es la API subyacente, un estilo de dibujo orientado a objetos, que define todos los objetos gráficos en plotly (traducido de graph_objects, ¿no es ese el significado de los objetos gráficos, realmente simple y rudo!) y proporciona un conjunto de diseño similar la función (diseño), similar al rol de matplotlib;

  • plotly.express es una API de alto nivel y un estilo de dibujo funcional. El proceso de dibujo es el proceso de especificar cada parámetro de la función, lo que proporciona una función de dibujo más concisa y conveniente . Si el primero es similar a matplotlib, entonces plotly.express es equivalente al papel de seaborn.

Buen chico, plotly tiene que definir dos conjuntos de estilos de dibujo.¿Realmente va a reemplazar el estado de matplotlib+seaborn? Pero para los usuarios, puede ser popular: si necesita ser rápido y conciso, use plotly.express; si necesita una personalización personalizada, use plotly.graph_objects.

A continuación, se dan dos ejemplos de código simple basados ​​en plotly

1) Utilice la API subyacente - graph_objects

La razón por la que graph_objects se denomina API subyacente es porque expone más detalles y parámetros de dibujo, pero esto tiene ventajas y desventajas. En términos generales, el dibujo basado en el submódulo graph_objects se divide principalmente en tres pasos:

  • Seleccione un objeto de gráfico (graph_object) y configure los datos que se van a trazar, como los datos x e y, las propiedades del gráfico, como el título, el tipo de línea, etc.

  • Establezca algunos diseños y configure los parámetros de diseño, como el tamaño de la imagen, el título, etc.

  • Cree un objeto de figura y reciba el objeto de gráfico y el objeto de diseño obtenidos en los dos primeros pasos y luego muéstrelos

Por ejemplo:

import plotly.graph_objects as go  # 标准引用格式,一般简写为:go
import plotly.express as px  # 标准引用格式,一般简写为:px
tips = px.data.tips()  # plotly内置数据集:tips

# 使用graph_objects绘图流程需要三步
line = go.Scatter(x=tips['total_bill'], y=tips['tip'], mode='markers')  # ① 创建图表对象
layout = go.Layout(autosize=False, width=900, height=600, title='tips')  # ② 创建布局对象
go.Figure(data=line ,layout=layout).show()  # 创建Figure,接收图表和布局,并加以显示

2) Usar API avanzada - express

La razón por la que express se llama una API de alto nivel es porque tiene una abstracción de más alto nivel, o puede obtener resultados de dibujo más ricos con menos código.La interfaz de dibujo express más importante parece estar naturalmente adaptada a pd.DataFrame Existe , porque el primer parámetro en sus diversas funciones de dibujo es data_frame! Después de configurar este parámetro, los datos x e y solo necesitan proporcionar los nombres de columna correspondientes. Por ejemplo, para los mismos requisitos de dibujo anteriores, solo se necesita llamar a una función:

import plotly.graph_objects as go  # 标准引用格式,一般简写为:go
import plotly.express as px  # 标准引用格式,一般简写为:px
tips = px.data.tips()  # plotly内置数据集:tips

# 使用express绘图只需要调用一个函数
px.scatter(tips, x='total_bill', y='tip', width=900, height=600, title='tips').show()

Por supuesto, los resultados de dibujo obtenidos por los dos métodos anteriores son los mismos, y esta imagen proporciona funciones interactivas comunes, como selección de área (incluyendo área rectangular y área personalizada), zoom, movimiento y almacenamiento y otros botones interactivos comunes, demostración simple como sigue:

7eb2f014cb360a9d08559568f9ec5b90.gif

Luego demuestre un diagrama de violín que prefiero para mostrar la relación de distribución entre categorías:

cb4b861272499904d8b387e35ba71a20.png

¿Tiene olor a marino? . ?

Otros dos puntos que vale la pena agregar:

1) Plotly proporciona una interfaz para convertir un dibujo matplotlib en un dibujo plotly, lo que hace que el uso combinado de dos bibliotecas de visualización sea más fluido hasta cierto punto, pero es necesario probar la experiencia específica;

2) La primera versión de plotly también distingue entre en línea y fuera de línea. El método fuera de línea es el método de dibujo convencional mencionado anteriormente, y el método en línea probablemente necesite conectarse al servidor web de plotly. Sin embargo, creo que puede no ser útil, por lo que se elimina en V4.0. Para obtener más información, consulte la Nota proporcionada por el sitio web oficial de plotly:

7debe60eb91a2d1728d09ac9eb1bf906.png

1bce8a3ec9f26ce1b2fff95b51a3d18c.png

Lectura relacionada:

Supongo que te gusta

Origin blog.csdn.net/weixin_43841688/article/details/121484703
Recomendado
Clasificación