line
de plotly
Puedes crear gráficos de líneas con plotly y Python con la función line
de plotly express. La función reconoce datos de dos maneras: pasando arrays de manera individual a x
e y
o pasando un data frame de pandas como entrada y especificando el nombre de las columnas a ser utilizadas.
import plotly.express as px
# Gráfico de líneas
fig = px.line(x = [1, 2, 3, 4, 5, 6, 7],
y = [10, 15, 25, 18, 43, 30, 65])
# Alternativa: datos a partir de un data frame de pandas
# import pandas as pd
# df = pd.DataFrame({'x': [1, 2, 3, 4, 5, 6, 7],
# 'y': [10, 15, 25, 18, 43, 30, 65]})
# Gráfico de líneas a partir de un data frame
# fig = px.line(df, x = "x", y = "y")
fig.show()
Títulos del gráfico de líneas
Es posible agregar un título a un gráfico de líneas de plotly con el argumento title
. También puedes personalizar las etiquetas de los ejes con labels
.
import plotly.express as px
import pandas as pd
# Data frame de pandas
df = pd.DataFrame({'x': [1, 2, 3, 4, 5, 6, 7],
'y': [10, 15, 25, 18, 43, 30, 65]})
fig = px.line(df, x = 'x', y = 'y',
title = "Título del gráfico de líneas",
labels = {'x': 'X-axis', 'y':'Y-axis'})
fig.show()
Marcadores
Por defecto, los gráficos de líneas de plotly no muestran los marcadores para cada par de puntos, pero si quieres puedes establecer el argumento markers
como True
para agregarlos.
import plotly.express as px
import pandas as pd
# Data frame de pandas
df = pd.DataFrame({'x': [1, 2, 3, 4, 5, 6, 7],
'y': [10, 15, 25, 18, 43, 30, 65]})
fig = px.line(df, x = 'x', y = 'y', markers = True)
fig.show()
Agregar textos
Puedes agregar etiquetas a cada observación con el argumento text
. Para ello tan solo tienes que pasar la variable que quieras al argumento. Ten en cuenta que puedes personalizar la posición de los textos con el argumento textposition
de la función update_traces
.
import plotly.express as px
import pandas as pd
# Data frame de pandas
df = pd.DataFrame({'x': [1, 2, 3, 4, 5, 6, 7],
'y': [10, 15, 25, 18, 43, 30, 65]})
fig = px.line(df, x = 'x', y = 'y', text = 'y')
fig.update_traces(textposition = "top center")
fig.show()
Edición avanzada de las líneas y marcadores
Es importante destacar que puedes personalizar el estilo de líneas y marcadores con el método update_traces
. Tendrás que pasar diccionarios con las propiedades que quieras a cada elemento, como en el ejemplo siguiente.
import plotly.express as px
import pandas as pd
# Data frame de pandas
df = pd.DataFrame({'x': [1, 2, 3, 4, 5, 6, 7],
'y': [10, 15, 25, 18, 43, 30, 65]})
fig = px.line(df, x = 'x', y = 'y', markers = True)
fig.update_traces(line = dict(dash = "dot", width = 4, color = "red"),
marker = dict(color = "darkblue", size = 20, opacity = 0.8))
fig.show()
La función line
proporciona los argumentos color
, symbol
y line_dash
para crear gráficos de líneas en base a grupos de una variable categórica.
Color por grupo
Si pasas una variable categórica a color
podrás crear un gráfico de líneas con tantas líneas como grupos diferentes tenga la variable y cada una de ellas tendrá un color diferente.
import plotly.express as px
import pandas as pd
# Data frame de pandas
df = pd.DataFrame({'x': [2010, 2011, 2012, 2013, 2010, 2011, 2012, 2013],
'y': [10, 15, 25, 18, 43, 30, 6, 12],
'grupo': ['G1', 'G1', 'G1', 'G1', 'G2', 'G2', 'G2', 'G2']})
fig = px.line(df, x = 'x', y = 'y', color = 'grupo')
fig.show()
Puedes personalizar el color de cada grupo con color_discrete_map
como en el ejemplo siguiente o pasando una lista de colores a color_discrete_sequence
.
import plotly.express as px
import pandas as pd
# Data frame de pandas
df = pd.DataFrame({'x': [2010, 2011, 2012, 2013, 2010, 2011, 2012, 2013],
'y': [10, 15, 25, 18, 43, 30, 6, 12],
'grupo': ['G1', 'G1', 'G1', 'G1', 'G2', 'G2', 'G2', 'G2']})
fig = px.line(df, x = 'x', y = 'y', color = 'grupo',
color_discrete_map = {'G1':'green', 'G2':'orange'})
fig.show()
Marcadores por grupo
Si pasas una variable categórica a symbol
cada línea tendrá marcadores diferentes. Ten en cuenta que puedes combinar esto con color
, de modo que cada línea tendrá marcadores y colores diferentes.
import plotly.express as px
import pandas as pd
# Data frame de pandas
df = pd.DataFrame({'x': [2010, 2011, 2012, 2013, 2010, 2011, 2012, 2013],
'y': [10, 15, 25, 18, 43, 30, 6, 12],
'grupo' : ['G1', 'G1', 'G1', 'G1', 'G2', 'G2', 'G2', 'G2']})
fig = px.line(df, x = 'x', y = 'y', color = 'grupo', symbol = 'grupo')
fig.show()
La forma de los símbolos se puede establecer a través del argumento symbol_map
para especificar el símbolo para cada grupo o pasando una lista de símbolos a symbol_sequence
.
import plotly.express as px
import pandas as pd
# Data frame de pandas
df = pd.DataFrame({'x': [2010, 2011, 2012, 2013, 2010, 2011, 2012, 2013],
'y': [10, 15, 25, 18, 43, 30, 6, 12],
'grupo' : ['G1', 'G1', 'G1', 'G1', 'G2', 'G2', 'G2', 'G2']})
fig = px.line(df, x = 'x', y = 'y', color = 'grupo', symbol = 'grupo',
symbol_map = {'G1': 'square', 'G2': 'cross'})
fig.show()
Estilo de línea por grupo
La última opción es utilizar un estilo de línea diferente para cada grupo. Para ello tendrás que pasar tu variable categórica a line_dash
.
import plotly.express as px
import pandas as pd
# Data frame de pandas
df = pd.DataFrame({'x': [2010, 2011, 2012, 2013, 2010, 2011, 2012, 2013],
'y': [10, 15, 25, 18, 43, 30, 6, 12],
'grupo': ['G1', 'G1', 'G1', 'G1', 'G2', 'G2', 'G2', 'G2']})
fig = px.line(df, x = 'x', y = 'y', color = 'grupo', line_dash = 'grupo')
fig.show()
Puedes especificar el tipo de línea que quieras para cada grupo con line_dash_map
o con line_dash_sequence
.
import plotly.express as px
import pandas as pd
# Data frame de pandas
df = pd.DataFrame({'x': [2010, 2011, 2012, 2013, 2010, 2011, 2012, 2013],
'y': [10, 15, 25, 18, 43, 30, 6, 12],
'grupo': ['G1', 'G1', 'G1', 'G1', 'G2', 'G2', 'G2', 'G2']})
fig = px.line(df, x = 'x', y = 'y', color = 'grupo', line_dash = 'grupo',
line_dash_map = {'G1': 'dashdot', 'G2': 'dash'})
fig.show()
También te puede interesar