Setzen Sie Markierungen für einzelne Punkte auf einer Linie
Lesezeit: 4 Minuten
dbmikus
Ich habe Matplotlib verwendet, um Linien auf einer Figur zu zeichnen. Jetzt möchte ich den Stil, insbesondere die Markierung, für einzelne Punkte auf der Linie festlegen. Wie mache ich das?
Um meine Frage zu klären, möchte ich den Stil für einzelne Markierungen in einer Zeile festlegen können, nicht für jede Markierung in dieser Zeile.
Wim
Geben Sie die Schlüsselwortargumente an linestyle und/oder marker in deinem Aufruf an plot.
Verwenden Sie beispielsweise eine gestrichelte Linie und blaue Kreismarkierungen:
plt.plot(range(10), linestyle="--", marker="o", color="b", label="line with marker")
plt.legend()
Ein Shortcut-Aufruf für dasselbe:
plt.plot(range(10), '--bo', label="line with marker")
plt.legend()
Hier ist eine Liste der möglichen Linien- und Markierungsstile:
================ ===============================
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
================ ===============================
bearbeiten: mit einem Beispiel für die Markierung einer beliebigen Teilmenge von Punkten, wie in den Kommentaren gefordert:
Dieses letzte Beispiel mit dem markevery kwarg ist seit 1.4+ aufgrund der Zusammenführung von möglich Dieser Feature-Zweig. Wenn Sie mit einer älteren Version von Matplotlib nicht weiterkommen, können Sie das Ergebnis immer noch erzielen, indem Sie dem Liniendiagramm ein Streudiagramm überlagern. Weitere Einzelheiten finden Sie im Bearbeitungsverlauf.
Odin
Es gibt ein Bild, das den Namen und die Beschreibung aller Markierungen zeigt. Ich hoffe, es hilft Ihnen.
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(figsize=(8, 8))
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.axis('off')
plt.tight_layout()
plt.show()
Ein einfacher Trick, um die Form und Größe einer bestimmten Punktmarkierung zu ändern, besteht darin, sie zunächst mit allen anderen Daten zu zeichnen und dann eine weitere Darstellung nur mit diesem Punkt (oder einer Reihe von Punkten, wenn Sie den Stil mehrerer Punkte ändern möchten) zu zeichnen. . Angenommen, wir möchten die Markierungsform des zweiten Punkts ändern:
x = [1,2,3,4,5]
y = [2,1,3,6,7]
plt.plot(x, y, "-o")
x0 = [2]
y0 = [1]
plt.plot(x0, y0, "s")
plt.show()