python - graficas - matplotlib: establece marcadores para puntos individuales en una línea
python graficos 2d (3)
He usado matplotlib para trazar líneas en una figura. Ahora me gustaría establecer el estilo, específicamente el marcador, para puntos individuales en la línea. ¿Cómo hago esto?
Editar: para aclarar mi pregunta, que fue respondida, quiero poder establecer el estilo de los marcadores individuales en una línea, no todos los marcadores en dicha línea.
Hay una imagen que muestra el nombre y la descripción de todos los marcadores, espero que te ayude.
import matplotlib.pylab as plt
markers=[''.'','','',''o'',''v'',''^'',''<'',''>'',''1'',''2'',''3'',''4'',''8'',''s'',''p'',''P'',''*'',''h'',''H'',''+'',''x'',''X'',''D'',''d'',''|'',''_'']
descriptions=[''point'', ''pixel'', ''circle'', ''triangle_down'', ''triangle_up'',''triangle_left'', ''triangle_right'', ''tri_down'', ''tri_up'', ''tri_left'',''tri_right'', ''octagon'', ''square'', ''pentagon'', ''plus (filled)'',''star'', ''hexagon1'', ''hexagon2'', ''plus'', ''x'', ''x (filled)'',''diamond'', ''thin_diamond'', ''vline'', ''hline'']
x=[]
y=[]
for i in range(5):
for j in range(5):
x.append(i)
y.append(j)
plt.figure()
for i,j,m,l in zip(x,y,markers,descriptions):
plt.scatter(i,j,marker=m)
plt.text(i-0.15,j+0.15,s=m+'' : ''+l)
plt.axis([-0.1,4.8,-0.1,4.5])
plt.tight_layout()
plt.axis(''off'')
plt.show()
Para referencia futura, el artista de Line2D
devuelto por plot()
también tiene un método set_markevery()
que le permite establecer solo marcadores en ciertos puntos: consulte https://matplotlib.org/api/_as_gen/matplotlib.lines.Line2D.html#matplotlib.lines.Line2D.set_markevery
Especifique la palabra clave args linestyle
y / o marker
en su llamada para plot
.
Por ejemplo, usando una línea discontinua y marcadores de círculo azul:
plt.plot(range(10), linestyle=''--'', marker=''o'', color=''b'')
Un acceso directo para la misma cosa:
plt.plot(range(10), ''--bo'')
Aquí hay una lista de los posibles estilos de línea y marcador:
================ ===============================
character description
================ ===============================
- solid line style
-- dashed line style
-. dash-dot line style
: dotted line style
. point marker
, pixel marker
o circle marker
v triangle_down marker
^ triangle_up marker
< triangle_left marker
> triangle_right marker
1 tri_down marker
2 tri_up marker
3 tri_left marker
4 tri_right marker
s square marker
p pentagon marker
* star marker
h hexagon1 marker
H hexagon2 marker
+ plus marker
x x marker
D diamond marker
d thin_diamond marker
| vline marker
_ hline marker
================ ===============================
editar: con un ejemplo de marcar un subconjunto arbitrario de puntos, como se solicita en los comentarios:
import numpy as np
import matplotlib.pyplot as plt
xs = np.linspace(-np.pi, np.pi, 30)
ys = np.sin(xs)
markers_on = [12, 17, 18, 19]
plt.plot(xs, ys, ''-gD'', markevery=markers_on)
plt.show()
Este último ejemplo usando el markevery
kwarg es posible desde 1.4+, debido a la fusión de esta rama de características . Si está atascado en una versión anterior de matplotlib, aún puede lograr el resultado al superponer un diagrama de dispersión en el diagrama de líneas. Vea el historial de edición para más detalles.