Gráfico de líneas en plotly

La función 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()

Gráfico de líneas por grupo

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()
Storytelling con Datos

Visualización de datos para profesionales

Comprar en Amazon

También te puede interesar