Gráficos de dispersión en plotly

La función scatter de plotly

Con la función scatter de Plotly Express es muy fácil crear gráficos de dispersión o nubes de puntos con Plotly y Python. Tendrás que pasar tus datos como vector o como un data frame de pandas, tal y como se indica en el ejemplo siguiente.

import plotly.express as px

fig = px.scatter(x = [0, 1, 2, 3, 4, 5],
                 y = [16, 8, 4, 2, 1, 0])

# Alternativa: datos desde un data frame de pandas
# import pandas as pd
# df = pd.DataFrame({'x': [0, 1, 2, 3, 4, 5],
#                    'y': [16, 8, 4, 2, 1, 0]})

# Gráfico de dispersión a partir de un data frame de pandas
# fig = px.scatter(df, x = "x", y = "y")

fig.show()

Agregar etiquetas a los ejes y un título

Si quieres agregar un título a tu gráfico puedes pasar un texto a title. Si quieres personalizar las etiquetas de los ejes tendrás que utilizar el argumento labels de la siguiente manera.

import plotly.express as px

fig = px.scatter(x = [0, 1, 2, 3, 4, 5],
                 y = [16, 8, 4, 2, 1, 0],
                 title = "Título del gráfico",
                 labels = {'x': 'Eje X', 'y':'Eje Y'})

fig.show()

Personalización del color

Color por grupo

Puedes pasar una variable categórica al argumento color para colorear las observaciones por grupo.

import plotly.express as px
import pandas as pd

# Data frame de pandas
df = pd.DataFrame({'x': [0, 1, 2, 3, 4, 5],
                   'y': [16, 8, 4, 2, 1, 0],
                   'group': ['0', '1', '0', '1', '0', '1']})

# Gráfico de dispersión
fig = px.scatter(df, x = "x", y = "y", color = "group")
                 
fig.show()

Color en base a una variable numérica

El color se puede asignar a una variable numérica. En este escenario, las observaciones tendrán una escala de color continua en base a los valores de la variable pasada a color.

import plotly.express as px
import pandas as pd

# Data frame de pandas
df = pd.DataFrame({'x': [0, 1, 2, 3, 4, 5],
                   'y': [16, 8, 4, 2, 1, 0]})

# Gráfico de dispersión
fig = px.scatter(df, x = "x", y = "y", color = "y")
                 
fig.show()

Símbolos

Símbolos por grupo

Por defecto, todos los símbolos son círculos, pero si pasas una variable categórica a symbol cada grupo se coloreará con un símbolo diferente.

import plotly.express as px
import pandas as pd

# Data frame de pandas
df = pd.DataFrame({'x': [0, 1, 2, 3, 4, 5],
                   'y': [16, 8, 4, 2, 1, 0],
                   'group': ['0', '1', '0', '1', '0', '1']})

# Gráfico de dispersión
fig = px.scatter(df, x = "x", y = "y", symbol = "group")
                 
fig.show()

Tamaño de los símbolos en base a una variable

Es posible establecer el tamaño de los símbolos en base a los valores de una variable. En el siguiente ejemplo usaremos la variable y para determinar el tamaño de los símbolos de modo que cuanto mayor sea el valor, más grandes serán los símbolos.

import plotly.express as px
import pandas as pd

# Data frame de pandas
df = pd.DataFrame({'x': [0, 1, 2, 3, 4, 5],
                   'y': [16, 8, 4, 2, 1, 0],
                   'group': ['0', '1', '0', '1', '0', '1']})

# Gráfico de dispersión
fig = px.scatter(df, x = "x", y = "y", color = "group", size = "y")
                 
fig.show()

Opacidad

Ten en cuenta que puedes controlar la opacidad de los símbolos con opacity. Los posibles valores oscilan entre 0 y 1.

import plotly.express as px
import pandas as pd

# Data frame de pandas
df = pd.DataFrame({'x': [0, 1, 2, 3, 4, 5],
                   'y': [16, 8, 4, 2, 1, 0]})

# Gráfico de dispersión
fig = px.scatter(df, x = "x", y = "y", opacity = 0.5)
                 
fig.show()

Gráfico de dispersión con gráficos marginales

La función scatter de Plotly proprciona los argumentos marginal_x y marginal_y para agregar gráficos marginales a los gráficos de dispersión. Las posibles opciones son "box" para gráficos de caja, "hist" para histogramas, "violin" para gráficos de violín y "rug" para rug plots.

Gráfico de dispersión con gráficos de caja marginales

import plotly.express as px
import pandas as pd

# Data frame de pandas
df = pd.DataFrame({'x': [0, 1, 2, 3, 4, 5],
                   'y': [16, 8, 4, 2, 1, 0]})

# Gráfico de dispersión con gráficos de caja marginales
fig = px.scatter(df, x = "x", y = "y",
                 marginal_x = "box", marginal_y = "box") 
                 
fig.show()

Gráfico de dispersión con histogramas marginales

import plotly.express as px
import pandas as pd

# Data frame de pandas
df = pd.DataFrame({'x': [0, 1, 2, 3, 4, 5],
                   'y': [16, 8, 4, 2, 1, 0]})

# Gráfico de dispersión con histogramas marginales
fig = px.scatter(df, x = "x", y = "y",
                 marginal_x = "histogram", marginal_y = "histogram") 
                 
fig.show()

Gráfico de dispersión con gráficos de violín marginales

import plotly.express as px
import pandas as pd

# Data frame de pandas
df = pd.DataFrame({'x': [0, 1, 2, 3, 4, 5],
                   'y': [16, 8, 4, 2, 1, 0]})

# Gráfico de dispersión con rug plots marginales
fig = px.scatter(df, x = "x", y = "y",
                 marginal_x = "violin", marginal_y = "violin") 
                 
fig.show()

Gráfico de dispersión con rug plots marginales

import plotly.express as px
import pandas as pd

# Data frame de pandas
df = pd.DataFrame({'x': [0, 1, 2, 3, 4, 5],
                   'y': [16, 8, 4, 2, 1, 0]})

# Gráfico de dispersión con rug plots marginales
fig = px.scatter(df, x = "x", y = "y",
                 marginal_x = "rug", marginal_y = "rug") 
                 
fig.show()
Fundamentals of Data Visualization

A Primer on Making Informative and Compelling Figures

Comprar en Amazon

También te puede interesar