2016-05-26 19 views
3

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

Example results

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') 

enter image description here

+0

Dank! Das funktioniert perfekt :) – Mazin

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) 

enter image description here enter image description here enter image description here