Ich versuche, mehrere Zeilen in Python mit matplotlib
mit plt.waitforbuttonpress(-1)
zu plotten, so dass ich jede neue Zeile getrennt analysieren kann. Aber wenn ich das mache, möchte ich, dass die neueste Zeile eine Farbe hat und der Rest schwarz ist. Ich weiß, wie man einer neuen Zeile eine Farbe gibt, aber ich finde keine Möglichkeit, alle vorherigen Zeilen auf Schwarz zurückzusetzen. Ist das möglich? So zum Beispiel:Python interaktives Diagramm neueste Zeile in Farbe, Rest in schwarz
3
A
Antwort
3
Sie könnten Schleife über die alten Linien und stellen Sie die Linienfarbe, bevor Sie den neuen mit einer bestimmten Farbe aufgetragen ist. Leider plt.waitforbuttonpress()
scheint nicht auf meinem Computer zu arbeiten, aber so etwas wie dies:
import numpy as np
import matplotlib.pylab as pl
pl.figure()
ax=pl.subplot(111)
for i in range(10):
# 1. set all lines to a black color
for l in ax.get_lines():
l.set_color('k')
# 2. plot the latest one in a red color
pl.plot(np.arange(10), np.random.random(10), color='r')
1
können Sie line.set_color('k')
die Farbe der Linie, nachdem er Plotten zu setzen verwenden, wo line
ein matplotlib ist Line2D
Beispiel. Glücklicherweise können wir auf alle Linien von einer Axes
Instanz in der Liste ax.lines
zugreifen, also ist es nur ein Fall, diese Liste zu durchlaufen und alle Linien auf Schwarz zu setzen, bevor die neue Linie gezeichnet wird. Wir können in einer einfachen Codezeile tun:
[l.set_color('k') for l in ax.lines]
hier ein minimales Beispiel:
import matplotlib.pyplot as plt
import numpy as np
plt.ion()
x = np.arange(5)
y = np.arange(5)
fig,ax = plt.subplots(1)
ax.set_xlim(0,4)
ax.set_ylim(0,6)
ax.plot(x,y,'r-')
plt.waitforbuttonpress(-1)
[l.set_color('k') for l in ax.lines]
ax.plot(x,y+1,'r-')
plt.waitforbuttonpress(-1)
[l.set_color('k') for l in ax.lines]
ax.plot(x,y+2,'r-')
plt.waitforbuttonpress(-1)
Dank! Das funktioniert perfekt :) – Mazin