Los marcadores son los símbolos que representan cada punto de datos en matplotlib. Se pueden agregar a los gráficos de líneas con plot y son la base de los gráficos de dispersión creados con scatter. En este tutorial encontrarás la lista completa de marcadores y cómo personalizarlos.
La siguiente imagen muestra todos los marcadores disponibles en matplotlib con la cadena de texto que tienes que pasar al argumento marker.

import matplotlib.pyplot as plt
markers = [".", ",", "o", "v", "^", "<", ">", "1", "2", "3", "4", "8", "s",
"p", "P", "*", "h", "H", "+", "x", "X", "D", "d", "|", "_"]
fig, ax = plt.subplots(figsize = (8, 4))
for i, m in enumerate(markers):
x, y = i % 9, - (i // 9)
ax.plot(x, y, marker = m, markersize = 15, color = "tab:blue")
ax.text(x, y - 0.4, f'"{m}"', ha = "center", fontsize = 11)
ax.set_xlim(-0.6, 8.6)
ax.set_ylim(-2.8, 0.5)
ax.axis("off")
# plt.show()
| Marcador | Descripción |
|---|---|
“.”
|
punto |
“,”
|
píxel |
“o”
|
círculo |
“v”
|
triángulo hacia abajo |
“^”
|
triángulo hacia arriba |
“<”
|
triángulo hacia la izquierda |
“>”
|
triángulo hacia la derecha |
“1”
|
trípode hacia abajo |
“2”
|
trípode hacia arriba |
“3”
|
trípode hacia la izquierda |
“4”
|
trípode hacia la derecha |
“8”
|
octógono |
“s”
|
cuadrado |
“p”
|
pentágono |
“P”
|
signo más (relleno) |
“*“
|
estrella |
“h”
|
hexágono 1 |
“H”
|
hexágono 2 |
“+”
|
signo más |
“x”
|
x |
“X”
|
x (rellena) |
“D”
|
diamante |
“d”
|
diamante estrecho |
“|”
|
línea vertical |
“_“
|
línea horizontal |
Además, puedes usar los números del 0 al 11 para marcadores en forma de flecha y de marca, "none" o None para no mostrar ningún marcador y cualquier expresión matemática entre signos de dólar, como se explica al final de este tutorial.
Utiliza el argumento marker de plot para agregar marcadores a un gráfico de líneas. En una cadena de formato el marcador se indica con su carácter, de modo que "o-" significa círculos unidos por una línea continua y "o" solo círculos.
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 3, 2, 4, 3], marker = "o")
ax.plot([0, 2, 1, 3, 2], marker = "s")
# plt.show()

Mostrar un marcador cada N puntos
Cuando hay muchos datos utiliza markevery para dibujar solo algunos de los marcadores.
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100)
fig, ax = plt.subplots()
ax.plot(x, np.sin(x), marker = "o", markevery = 10)
# plt.show()

En scatter el marcador también se indica con marker, pero ten en cuenta que cada llamada solo admite un marcador. Para usar un marcador diferente por grupo llama a scatter una vez por cada grupo.
import numpy as np
import matplotlib.pyplot as plt
rng = np.random.default_rng(3)
fig, ax = plt.subplots()
ax.scatter(rng.normal(0, 1, 30), rng.normal(0, 1, 30), marker = "o", label = "A")
ax.scatter(rng.normal(2, 1, 30), rng.normal(2, 1, 30), marker = "^", label = "B")
ax.scatter(rng.normal(4, 1, 30), rng.normal(0, 1, 30), marker = "s", label = "C")
ax.legend()
# plt.show()

El tamaño se establece con markersize (o ms) en plot y con s en scatter. Ten en cuenta que s es el área del marcador en puntos al cuadrado, así que para duplicar el diámetro tienes que multiplicar s por cuatro.
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [1, 2, 3], marker = "o", markersize = 15)
ax.scatter([1, 2, 3], [2, 3, 4], s = 200)
# plt.show()

Tamaño según una variable
En scatter puedes pasar un array a s para crear un gráfico de burbujas en el que el tamaño de cada punto depende de una variable.
import numpy as np
import matplotlib.pyplot as plt
rng = np.random.default_rng(4)
x, y = rng.uniform(0, 10, (2, 20))
size = rng.uniform(20, 600, 20)
fig, ax = plt.subplots()
ax.scatter(x, y, s = size, alpha = 0.6)
# plt.show()

Los marcadores tienen un color de relleno y un color de borde. En plot utiliza markerfacecolor (mfc), markeredgecolor (mec) y markeredgewidth (mew). En scatter utiliza color o c, edgecolors y linewidths.
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 3, 2, 4], marker = "o", markersize = 14, color = "gray",
markerfacecolor = "gold",
markeredgecolor = "black",
markeredgewidth = 2)
# plt.show()

Marcadores huecos
Para dibujar marcadores vacíos establece el color de relleno en "none" y especifica un color para el borde.
import numpy as np
import matplotlib.pyplot as plt
rng = np.random.default_rng(5)
fig, ax = plt.subplots()
ax.scatter(rng.normal(size = 50), rng.normal(size = 50), s = 80,
facecolors = "none", edgecolors = "tab:red")
# plt.show()

Estilo de relleno
El argumento fillstyle de plot rellena solo una parte del marcador. Los valores posibles son "full", "left", "right", "bottom", "top" y "none".
import matplotlib.pyplot as plt
styles = ["full", "left", "right", "bottom", "top", "none"]
fig, ax = plt.subplots(figsize = (4, 2))
for i, style in enumerate(styles):
ax.plot(i, 0, marker = "o", markersize = 20, color = "tab:blue", fillstyle = style)
ax.text(i, -0.5, style, ha = "center")
ax.set_ylim(-0.8, 0.5)
ax.axis("off")
# plt.show()

Cualquier expresión matemática o símbolo Unicode escrito entre signos de dólar se puede usar como marcador. Esto permite usar letras, números o símbolos como corazones o tréboles como marcadores.
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [1, 2, 3], marker = r"$\heartsuit$", markersize = 20, color = "red")
ax.plot([1, 2, 3], [2, 3, 4], marker = r"$\clubsuit$", markersize = 20, color = "black")
ax.plot([1, 2, 3], [3, 4, 5], marker = r"$A$", markersize = 15)
# plt.show()

Consulta también la lista completa de tipos de línea, los colores con nombre que puedes usar para los marcadores y cómo crear un gráfico de dispersión en matplotlib.
También te puede interesar