Tutorial de Python Plotly

Python Plotly Library es una biblioteca de código abierto que se puede usar para visualizar y comprender datos de manera simple y sencilla. Plotly admite varios tipos de gráficos, como gráficos de líneas, gráficos de dispersión, histogramas, gráficos de Cox, etc. Entonces, todos deben preguntarse por qué Plotly sobre otras herramientas o bibliotecas de visualización. Aquí está la respuesta:

  • Plotly tiene capacidades de herramientas flotantes que nos permiten detectar cualquier valor atípico o anomalía en una gran cantidad de puntos de datos.
  • Es visualmente atractivo que puede ser aceptado por una amplia gama de audiencias.
  • Nos permite la personalización infinita de nuestros gráficos que hace que nuestra trama sea más significativa y comprensible para los demás.

Python Plotly Tutorial

Este tutorial tiene como objetivo brindarle información sobre Plotly con la ayuda del enorme conjunto de datos que explica Plotly desde lo básico para avanzar y cubre todos los gráficos utilizados popularmente.

Tabla de contenidos 

Artículos recientes en Plotly !!! 

Instalación

Plotly no viene integrado con Python. Para instalarlo, escriba el siguiente comando en la terminal.

pip install plotly

Esto puede llevar algún tiempo, ya que también instalará las dependencias.

Estructura del paquete de Plotly

Hay tres módulos principales en Plotly. Están:

  • plotly.plotly
  • plotly.graph.objetos
  • plotly.herramientas

plotly.plotly actúa como interfaz entre la máquina local y Plotly. Contiene funciones que requieren una respuesta del servidor de Plotly.

El módulo plotly.graph_objects contiene los objetos (Figura, diseño, datos y la definición de los gráficos como diagrama de dispersión, gráfico de líneas) que son responsables de crear los gráficos. La figura se puede representar como dict o instancias de plotly.graph_objects.Figure y estos se serializan como JSON antes de pasar a plotly.js. Considere el siguiente ejemplo para una mejor comprensión.

Nota: el módulo plotly.express puede crear la figura completa a la vez. Utiliza graph_objects internamente y devuelve la instancia de graph_objects.Figure.

Ejemplo:

Python3

import plotly.express as px
 
 
# Creating the Figure instance
fig = px.line(x=[1,2, 3], y=[1, 2, 3])
 
# printing the figure instance
print(fig)

Producción:

plotly tutorial package structure

Las figuras se representan como árboles en los que el Node raíz tiene tres atributos de capa superior: datos, diseño y marcos, y los Nodes con nombre se denominan «atributos». Considere el ejemplo anterior, layout.legend es un diccionario anidado donde la leyenda es la clave dentro del diccionario cuyo valor también es un diccionario.  

El módulo plotly.tools contiene varias herramientas en forma de funciones que pueden mejorar la experiencia de Plotly. 

Empezando

Después de aprender la instalación y la estructura básica de Plotly, creemos un gráfico simple utilizando los conjuntos de datos predefinidos definidos por plotly.

Ejemplo:

Python3

import plotly.express as px
 
 
# Creating the Figure instance
fig = px.line(x=[1, 2, 3], y=[1, 2, 3])
 
# showing the plot
fig.show()

Producción:

En el ejemplo anterior, se importa el módulo plotly.express que devuelve la instancia de Figure. Hemos creado un gráfico de líneas simple pasando las coordenadas x, y de los puntos a graficar.

Creación de diferentes tipos de gráficos

Con plotly podemos crear más de 40 gráficos y cada gráfico se puede crear usando la clase plotly.express y plotly.graph_objects. Veamos algunos gráficos de uso común con la ayuda de Plotly.

Gráfico de linea

El diagrama de líneas en Plotly es una anexión muy accesible e ilustre a plotly que administra una variedad de tipos de datos y ensambla estadísticas fáciles de diseñar. Con px.line , cada posición de datos se representa como un vértice (cuya ubicación viene dada por las columnas x e y) de una marca de polilínea en el espacio 2D.

Ejemplo:

Python3

import plotly.express as px
 
# using the iris dataset
df = px.data.iris()
 
# plotting the line chart
fig = px.line(df, x="species", y="petal_width")
 
# showing the plot
fig.show()

Producción:

plotly tutorial line chart

Consulte los siguientes artículos para obtener información detallada sobre los gráficos de líneas.

Gráfico de barras

Un gráfico de barras es una representación pictórica de datos que presenta datos categóricos con barras rectangulares con alturas o longitudes proporcionales a los valores que representan. En otras palabras, es la representación pictórica del conjunto de datos. Estos conjuntos de datos contienen los valores numéricos de las variables que representan la longitud o la altura.

Ejemplo:

Python3

import plotly.express as px
 
# using the iris dataset
df = px.data.iris()
 
# plotting the bar chart
fig = px.bar(df, x="sepal_width", y="sepal_length")
 
# showing the plot
fig.show()

Producción:

plotly tutorial bar chart

Consulte los siguientes artículos para obtener información detallada sobre el gráfico de barras.

Histogramas

Un histograma contiene un área rectangular para mostrar la información estadística que es proporcional a la frecuencia de una variable y su ancho en intervalos numéricos sucesivos. Una representación gráfica que administra un grupo de puntos de datos en diferentes rangos especificados. Tiene una característica especial que no muestra espacios entre las barras y es similar a un gráfico de barras verticales.

Ejemplo:

Python3

import plotly.express as px
 
# using the iris dataset
df = px.data.iris()
 
# plotting the histogram
fig = px.histogram(df, x="sepal_length", y="petal_width")
 
# showing the plot
fig.show()

Producción:

plotly tutorial histogram

Consulte los siguientes artículos para obtener información detallada sobre los histogramas.

Gráficas de dispersión y de burbujas

Un gráfico de dispersión es un conjunto de puntos punteados para representar datos individuales en el eje horizontal y vertical. Un gráfico en el que los valores de dos variables se trazan a lo largo del eje X y el eje Y, el patrón de los puntos resultantes revela una correlación entre ellos.

Un diagrama de burbujas es un diagrama de dispersión con burbujas (círculos llenos de color). Las burbujas tienen varios tamaños que dependen de otra variable en los datos. Se puede crear utilizando el método scatter() de plotly.express.

Ejemplo 1: diagrama de dispersión

Python3

import plotly.express as px
 
# using the iris dataset
df = px.data.iris()
 
# plotting the scatter chart
fig = px.scatter(df, x="species", y="petal_width")
 
# showing the plot
fig.show()

Producción:

plotly tutorial scatter plot

Ejemplo 2: gráfico de burbujas

Python3

import plotly.express as px
 
# using the iris dataset
df = px.data.iris()
 
# plotting the bubble chart
fig = px.scatter(df, x="species", y="petal_width",
                 size="petal_length", color="species")
 
# showing the plot
fig.show()

Producción:

plotly tutorial bubble chart

Consulte los siguientes artículos para obtener información detallada sobre los diagramas de dispersión y los diagramas de burbujas.

Gráficos circulares

Un gráfico circular es un gráfico estadístico circular, que se divide en porciones para ilustrar proporciones numéricas. Representa un gráfico especial que utiliza «porciones circulares», donde cada sector muestra los tamaños relativos de los datos. Un gráfico circular se corta en forma de radios en segmentos que describen frecuencias relativas o magnitudes, también conocido como gráfico circular.

Ejemplo:

Python3

import plotly.express as px
 
# using the tips dataset
df = px.data.tips()
 
# plotting the pie chart
fig = px.pie(df, values="total_bill", names="day")
 
# showing the plot
fig.show()

Producción:

plotly tutorial pie chart

Consulte los siguientes artículos para obtener información detallada sobre los gráficos circulares.

Diagramas de caja

Un diagrama de caja , también conocido como diagrama de bigotes, se crea para mostrar el resumen del conjunto de valores de datos que tienen propiedades como mínimo, primer cuartil, mediana, tercer cuartil y máximo. En el diagrama de caja, se crea una caja desde el primer cuartil hasta el tercer cuartil, también hay una línea vertical que atraviesa la caja en la mediana. Aquí, el eje x indica los datos que se van a trazar, mientras que el eje y muestra la distribución de frecuencias.

Ejemplo:

Python3

import plotly.express as px
 
# using the tips dataset
df = px.data.tips()
 
# plotting the box chart
fig = px.box(df, x="day", y="total_bill")
 
# showing the plot
fig.show()

Producción:

plotly tutorial box plots

Consulte los siguientes artículos para obtener información detallada sobre los diagramas de caja.

Parcelas de violín

Violin Plot es un método para visualizar la distribución de datos numéricos de diferentes variables. Es similar a Box Plot pero con un gráfico rotado en cada lado, que brinda más información sobre la estimación de la densidad en el eje y. La densidad se refleja y se voltea y la forma resultante se rellena, creando una imagen que se asemeja a un violín. La ventaja de un diagrama de violín es que puede mostrar matices en la distribución que no son perceptibles en un diagrama de caja. Por otro lado, el diagrama de caja muestra más claramente los valores atípicos en los datos.

Ejemplo:

Python3

import plotly.express as px
 
# using the tips dataset
df = px.data.tips()
 
# plotting the violin chart
fig = px.violin(df, x="day", y="total_bill")
 
# showing the plot
fig.show()

Producción:

Consulte los artículos a continuación para obtener información detallada sobre las tramas de violín.

  • Parcelas de violín usando Plotly

Diagramas de Gantt

El gráfico de tabla de tiempo de normalización de actividad generalizada (GANTT) es un tipo de gráfico en el que están presentes una serie de líneas horizontales que muestran la cantidad de trabajo realizado o la producción completada en un período de tiempo determinado en relación con la cantidad planificada para esos proyectos. 

Ejemplo:

Python3

import plotly.figure_factory as ff
 
# Data to be plotted
df = [dict(Task="A", Start='2020-01-01', Finish='2009-02-02'),
    dict(Task="Job B", Start='2020-03-01', Finish='2020-11-11'),
    dict(Task="Job C", Start='2020-08-06', Finish='2020-09-21')]
 
# Creating the plot
fig = ff.create_gantt(df)
fig.show()

Producción:

Plotly Tutorial Gantt chart

Consulte los siguientes artículos para obtener información detallada sobre los diagramas de Gantt.

Gráficos de contorno

Los gráficos de contorno, también llamados gráficos de nivel, son una herramienta para realizar análisis multivariados y visualizar gráficos 3D en un espacio 2D. Si consideramos X e Y como nuestras variables que queremos graficar, entonces la respuesta Z se graficará como cortes en el plano XY debido a que los contornos a veces se denominan cortes Z o isorrespuesta.

Los gráficos de contorno se utilizan en el caso de que desee ver los cambios en algún valor (Z) como una función con respecto a los dos valores (X, Y). Considere el siguiente ejemplo.

Ejemplo:

Python3

import plotly.graph_objects as go
 
 
# Creating the X, Y value that will
# change the values of Z as a function
feature_x = np.arange(0, 50, 2)
feature_y = np.arange(0, 50, 3)
 
# Creating 2-D grid of features
[X, Y] = np.meshgrid(feature_x, feature_y)
 
Z = np.cos(X / 2) + np.sin(Y / 4)
 
# plotting the figure
fig = go.Figure(data =
    go.Contour(x = feature_x, y = feature_y, z = Z))
 
fig.show()

Producción:

plotly tutorial contour plots

Consulte los artículos a continuación para obtener información detallada sobre los gráficos de contorno.

mapas de calor

El mapa de calor se define como una representación gráfica de datos que utiliza colores para visualizar el valor de la array. En este, para representar valores más comunes o actividades mayores se utilizan colores más brillantes básicamente colores rojizos y para representar valores menos comunes o de actividad se prefieren colores más oscuros. El mapa de calor también se define por el nombre de la array de sombreado. 

Ejemplo: 

Python3

import plotly.graph_objects as go
 
 
feature_x = np.arange(0, 50, 2)
feature_y = np.arange(0, 50, 3)
 
# Creating 2-D grid of features
[X, Y] = np.meshgrid(feature_x, feature_y)
 
Z = np.cos(X / 2) + np.sin(Y / 4)
 
# plotting the figure
fig = go.Figure(data =
     go.Heatmap(x = feature_x, y = feature_y, z = Z,))
 
fig.show()

Producción:

plotly tutorial heatmap

Consulte los artículos a continuación para obtener información detallada sobre los mapas de calor.

Barras de error

Para funciones que representan puntos de datos 2D como px.scatter, px.line, px.bar, etc., las barras de error se dan como un nombre de columna que es el valor de error_x (para el error en la posición x) y error_y (para el error en la posición y). Las barras de error son la alternancia de presentación gráfica de datos y se utilizan en gráficos para implicar el error o la incertidumbre en una capacidad informada.

Ejemplo:

Python3

import plotly.express as px
 
# using the iris dataset
df = px.data.iris()
 
# Calculating the error field
df["error"] = df["petal_length"]/100
 
# plotting the scatter chart
fig = px.scatter(df, x="species", y="petal_width",
                error_x="error", error_y="error")
 
# showing the plot
fig.show()

Producción:

plotly tutorial error bar

Gráficos de líneas 3D

El gráfico de líneas en plotly es una anexión muy accesible e ilustre a plotly que administra una variedad de tipos de datos y ensambla estadísticas fáciles de diseñar. Con px.line_3d , cada posición de datos se representa como un vértice (cuya ubicación viene dada por las columnas x, y y z) de una marca de polilínea en el espacio 3D.

Ejemplo:

Python3

import plotly.express as px
 
# data to be plotted
df = px.data.tips()
 
# plotting the figure
fig = px.line_3d(df, x="sex", y="day",
                 z="time", color="sex")
 
fig.show()

Producción:

poltly tutorial 3d line

Consulte los siguientes artículos para obtener información detallada sobre los gráficos de líneas 3D.

Gráfico de dispersión 3D

3D Scatter Plot puede trazar gráficos bidimensionales que se pueden mejorar mediante el mapeo de hasta tres variables adicionales mientras se usa la semántica de los parámetros de tono, tamaño y estilo. Todos los parámetros controlan la semántica visual que se utilizan para identificar los diferentes subconjuntos. El uso de semántica redundante puede ser útil para hacer que los gráficos sean más accesibles. Se puede crear usando la función scatter_3d de la clase plotly.express.

Ejemplo:

Python3

import plotly.express as px
 
# Data to be plotted
df = px.data.iris()
 
# Plotting the figure
fig = px.scatter_3d(df, x = 'sepal_width',
                    y = 'sepal_length',
                    z = 'petal_width',
                    color = 'species')
 
fig.show()

Producción:

plotly tutorial 3d scatter plot

Consulte los artículos a continuación para obtener información detallada sobre el diagrama de dispersión 3D.

Gráficos de superficie 3D

La gráfica de superficie es aquella gráfica que tiene datos de tres dimensiones, que son X, Y y Z. En lugar de mostrar puntos de datos individuales, la gráfica de superficie tiene una relación funcional entre la variable dependiente Y y tiene dos variables independientes X y Z. Esta gráfica es Se utiliza para distinguir entre variables dependientes e independientes.

Ejemplo:

Python3

import plotly.graph_objects as go
import numpy as np
 
# Data to be plotted
x = np.outer(np.linspace(-2, 2, 30), np.ones(30))
y = x.copy().T
z = np.cos(x ** 2 + y ** 2)
 
# plotting the figure
fig = go.Figure(data=[go.Surface(x=x, y=y, z=z)])
 
fig.show()

Producción:

plotly tutorial 3d surface

Interactuando con las tramas

Plotly proporciona varias herramientas para interactuar con los gráficos, como agregar menús desplegables, botones, controles deslizantes, etc. Estos se pueden crear utilizando el atributo de menú de actualización del diseño del gráfico. Veamos cómo hacer todas esas cosas en detalle.

Crear menú desplegable en Plotly

Un menú desplegable es una parte del botón de menú que se muestra en una pantalla todo el tiempo. Cada botón de menú está asociado con un widget de menú que puede mostrar las opciones para ese botón de menú cuando se hace clic en él. En plotly, hay 4 métodos posibles para modificar los gráficos utilizando el método de menú de actualización.

  • restyle: modificar datos o atributos de datos
  • relayout: modificar los atributos de diseño
  • actualizar: modificar datos y atributos de diseño
  • animar: iniciar o pausar una animación

Ejemplo:

Python3

import plotly.graph_objects as px
import numpy as np
 
 
# creating random data through randomint
# function of numpy.random
np.random.seed(42)
 
# Data to be Plotted
random_x = np.random.randint(1, 101, 100)
random_y = np.random.randint(1, 101, 100)
 
plot = px.Figure(data=[px.Scatter(
    x=random_x,
    y=random_y,
    mode='markers',)
])
 
# Add dropdown
plot.update_layout(
    updatemenus=[
        dict(
            buttons=list([
                dict(
                    args=["type", "scatter"],
                    label="Scatter Plot",
                    method="restyle"
                ),
                dict(
                    args=["type", "bar"],
                    label="Bar Chart",
                    method="restyle"
                )
            ]),
            direction="down",
        ),
    ]
)
 
plot.show()

Producción:

En el ejemplo anterior, hemos creado dos gráficos para los mismos datos. Se puede acceder a estas parcelas mediante el menú desplegable.

Agregar botones a la trama

En plotly, los botones personalizados de acciones se utilizan para realizar acciones rápidamente directamente desde un registro. Los botones personalizados se pueden agregar a los diseños de página en CRM, marketing y aplicaciones personalizadas. También hay 4 métodos posibles que se pueden aplicar en los botones personalizados:

  • restyle: modificar datos o atributos de datos
  • relayout: modificar los atributos de diseño
  • actualizar: modificar datos y atributos de diseño
  • animar: iniciar o pausar una animación

Ejemplo:

Python3

import plotly.graph_objects as px
import pandas as pd
 
# reading the database
data = pd.read_csv("tips.csv")
 
 
plot = px.Figure(data=[px.Scatter(
    x=data['day'],
    y=data['tip'],
    mode='markers',)
])
 
# Add dropdown
plot.update_layout(
    updatemenus=[
        dict(
            type="buttons",
            direction="left",
            buttons=list([
                dict(
                    args=["type", "scatter"],
                    label="Scatter Plot",
                    method="restyle"
                ),
                dict(
                    args=["type", "bar"],
                    label="Bar Chart",
                    method="restyle"
                )
            ]),
        ),
    ]
)
 
plot.show()

Producción:

button-plotly

En este ejemplo también estamos creando dos gráficos diferentes en los mismos datos y ambos gráficos son accesibles mediante los botones.

Creación de controles deslizantes y selectores para el gráfico

En plotly, el control deslizante de rango es un control de entrada de tipo de rango personalizado. Permite seleccionar un valor o un rango de valores entre un rango mínimo y máximo especificado. Y el selector de rango es una herramienta para seleccionar rangos para mostrar dentro del gráfico. Proporciona botones para seleccionar rangos preconfigurados en el gráfico. También proporciona cuadros de entrada donde las fechas mínima y máxima se pueden ingresar manualmente.

Ejemplo:

Python3

import plotly.graph_objects as px
import plotly.express as go
import numpy as np
 
df = go.data.tips()
 
x = df['total_bill']
y = df['day']
 
plot = px.Figure(data=[px.Scatter(
    x=x,
    y=y,
    mode='lines',)
])
 
plot.update_layout(
    xaxis=dict(
        rangeselector=dict(
            buttons=list([
                dict(count=1,
                    step="day",
                    stepmode="backward"),
            ])
        ),
        rangeslider=dict(
            visible=True
        ),
    )
)
 
plot.show()

Producción:

Más parcelas usando Plotly

Más temas sobre Plotly

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *