2016-05-26 10 views
3

私はmatplotlibを使って複数の行をPythonでプロットしようとしています。それでplt.waitforbuttonpress(-1)を使って、新しい行を別々に分析することができます。しかし、これを行うときには、最新の行には色を、残りには黒を使用したいと思います。私は新しい行に色を付ける方法を知っていますが、前の行をすべて黒にリセットする方法を見つけることができません。これは可能ですか?ですから、例えば:Pythonインタラクティブプロット最新の色が黒で残ります

Example results

答えて

3

あなたは可能性があり、古い行をループし、特定の色で新しいものをプロットする前に、線の色を設定します。残念ながらplt.waitforbuttonpress()は、自分のコンピュータ上で動作するようには思えませんが、このような何か:

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

ありがとう:

[l.set_color('k') for l in ax.lines] 

ここでは、最小限の例があります:私たちは、コードの1つの簡単なラインでそれを行うことができます!これは完全に動作します:) – Mazin

1

あなたはlineはmatplotlibのLine2Dある場合、それをプロットした後、線の色を設定するためにline.set_color('k')を使用することができますインスタンス。幸いにもリストax.linesAxesインスタンスからすべての行にアクセスできるので、そのリストをループして新しい行をプロットする前にすべての行を黒に設定するだけです。

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

関連する問題