Tipos de línea en matplotlib

El estilo de una línea en matplotlib se controla con el argumento linestyle (o ls), disponible en plot y en cualquier función que dibuje líneas, como axhline, vlines, grid o los bordes de las barras. Esta guía contiene la lista de tipos de línea y cómo personalizar el grosor, el color y el patrón de las líneas.

Lista de tipos de línea

Matplotlib proporciona cuatro tipos de línea con nombre, que se pueden indicar con su nombre o con una cadena corta. Utiliza "None", "" o " " para no dibujar ninguna línea.

Nombre Cadena corta Descripción
“solid” “-” Línea continua (por defecto)
“dashed” “–” Línea discontinua
“dashdot” “-.” Línea de rayas y puntos
“dotted” “:” Línea punteada
“None” ““ Sin línea

El siguiente gráfico muestra los tipos de línea con nombre y algunos estilos personalizados habituales creados con tuplas de patrones, que se explican más adelante en este tutorial.

Lista de tipos de línea de matplotlib

import matplotlib.pyplot as plt

styles = [("solid", "-"), ("dashed", "--"), ("dashdot", "-."), ("dotted", ":"),
          ("loosely dotted", (0, (1, 10))), ("densely dotted", (0, (1, 1))),
          ("loosely dashed", (0, (5, 10))), ("densely dashed", (0, (5, 1))),
          ("dashdotdotted", (0, (3, 5, 1, 5, 1, 5))), ("long dash with offset", (5, (10, 3)))]

fig, ax = plt.subplots(figsize = (8, 5))

for i, (name, style) in enumerate(styles):
    ax.plot([0, 1], [-i, -i], linestyle = style, linewidth = 2, color = "black")
    ax.text(-0.02, -i, name, ha = "right", va = "center", fontsize = 11)
    ax.text(1.02, -i, repr(style), ha = "left", va = "center", fontsize = 10, family = "monospace")

ax.set_xlim(-0.45, 1.5)
ax.axis("off")
# plt.show()

Cambiar el tipo de línea

Pasa cualquiera de los estilos anteriores a linestyle o ls.

import numpy as np
import matplotlib.pyplot as plt

years = np.arange(2025, 2036)
base = 100 + 4 * (years - 2025)

fig, ax = plt.subplots()
ax.plot(years, base * 1.15, linestyle = "dashed", linewidth = 2, label = "Optimista")
ax.plot(years, base, linestyle = "solid", linewidth = 2, label = "Base")
ax.plot(years, base * 0.85, linestyle = ":", linewidth = 2, label = "Pesimista")
ax.legend()
# plt.show()

Cambiar el tipo de línea en matplotlib

Cadenas de formato

El tercer argumento posicional de plot es una cadena de formato que combina el color, el marcador y el tipo de línea. Por ejemplo, "r--" es una línea discontinua roja y "go:" una línea punteada verde con círculos.

import numpy as np
import matplotlib.pyplot as plt

years = np.arange(2025, 2036)
base = 100 + 4 * (years - 2025)

fig, ax = plt.subplots()
ax.plot(years, base, "r--")
ax.plot(years, base * 0.9, "go:")
# plt.show()

Cadenas de formato para el color, el marcador y el tipo de línea en matplotlib

Patrones de línea personalizados

Para tener más control pasa una tupla de la forma (offset, (on, off, on, off, ...)), donde on y off son las longitudes de los trazos y de los espacios en puntos y offset es el punto en el que empieza el patrón. Por ejemplo, (0, (5, 1)) dibuja trazos largos separados por espacios pequeños y (0, (3, 5, 1, 5)) una línea de rayas y puntos con espacios más amplios.

import numpy as np
import matplotlib.pyplot as plt

years = np.arange(2025, 2036)
base = 100 + 4 * (years - 2025)

fig, ax = plt.subplots()
ax.plot(years, base, linestyle = (0, (5, 1)))
ax.plot(years, base * 1.1, linestyle = (0, (3, 5, 1, 5)))
# plt.show()

Patrón de línea personalizado en matplotlib

Grosor de línea

El grosor de las líneas se establece en puntos con linewidth o lw. El valor por defecto es 1.5.

import numpy as np
import matplotlib.pyplot as plt

years = np.arange(2025, 2036)
base = 100 + 4 * (years - 2025)

fig, ax = plt.subplots()
ax.plot(years, base, linewidth = 0.5)
ax.plot(years, base + 10, linewidth = 2)
ax.plot(years, base + 20, linewidth = 5)
# plt.show()

Cambiar el grosor de línea en matplotlib

Color y transparencia de la línea

Utiliza color para cambiar el color de la línea (consulta la lista completa de colores de matplotlib) y alpha para establecer su transparencia.

import numpy as np
import matplotlib.pyplot as plt

years = np.arange(2025, 2036)
base = 100 + 4 * (years - 2025)

fig, ax = plt.subplots()
ax.plot(years, base, color = "darkorange", linewidth = 4, alpha = 0.5)
# plt.show()

Cambiar el color y la transparencia de la línea en matplotlib

Extremos y uniones de las líneas

Los argumentos dash_capstyle y solid_capstyle cambian los extremos de los trazos y de las líneas ("butt", "round" o "projecting"), mientras que dash_joinstyle y solid_joinstyle establecen cómo se unen los segmentos ("miter", "round" o "bevel"). Las diferencias se aprecian con líneas gruesas.

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([0, 1], [1, 1], linestyle = "--", linewidth = 8, dash_capstyle = "butt")
ax.plot([0, 1], [0, 0], linestyle = "--", linewidth = 8, dash_capstyle = "round")
ax.set_ylim(-0.5, 1.5)
# plt.show()

Trazos redondeados en matplotlib con dash_capstyle

Tipos de línea en otros elementos

Los mismos argumentos funcionan en cualquier elemento formado por líneas, como las líneas horizontales y verticales, las líneas del grid, el borde de las barras o los bordes de los ejes.

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.bar(["A", "B", "C"], [3, 5, 4], edgecolor = "black", linestyle = "--")
ax.axhline(4, color = "red", linestyle = ":", linewidth = 2)
ax.grid(axis = "y", linestyle = "-.")
ax.set_axisbelow(True)
# plt.show()

Tipos de línea para líneas de referencia, grid y bordes de barras en matplotlib

Aprende más sobre cómo personalizar las líneas del grid y los marcadores o cómo crear un gráfico de líneas en matplotlib.

Data Sketches

A journey of imagination, exploration, and beautiful data visualizations

Comprar en Amazon
Fundamentals of Data Visualization

A Primer on Making Informative and Compelling Figures

Comprar en Amazon

También te puede interesar