2017-07-19 13 views
2

私は、カスタムプロパティ(ラベル、線幅、EdgeColorを)私はset_data()を使用したい「正常」のプロットでmatplotlibでbarchartを更新するには?

import matplotlib.pyplot as plt 
fig = plt.figure() 
ax = plt.gca() 

x = np.arange(5) 
y = np.random.rand(5) 

bars = ax.bar(x, y, color='grey', linewidth=4.0) 

ax.cla() 
x2 = np.arange(10) 
y2 = np.random.rand(10) 
ax.bar(x2,y2) 
plt.show() 

の多くで、棒グラフを持っていますが、棒グラフで、私はエラーました:AttributeError: 'BarContainer' object has no attribute 'set_data'

私は単純に矩形の高さを更新したくないので、全く新しい矩形をプロットする必要があります。 ax.cla()を使用すると、すべての設定(線幅、エッジカラー、タイトル..)がデータ(四角形)だけでなく、何度もクリアされ、すべてリセットされてプログラムが遅くなります。 ax.cla()を使用しないと、設定は残りますが、プログラムは高速です(私のプロパティは常に設定する必要はありません)が、長方形は互いに描画されてしまいます。

あなたは私を助けることができますか?

答えて

3

あなたの場合、barsBarContainerです。これは基本的にRectangleパッチのリストです。バー1バイを削除するのはなぜ

import numpy as np 
import matplotlib.pyplot as plt 
fig = plt.figure() 
ax = plt.gca() 

x = np.arange(5) 
y = np.random.rand(5) 

bars = ax.bar(x, y, color='grey', linewidth=4.0) 

bars.remove() 
x2 = np.arange(10) 
y2 = np.random.rand(10) 
ax.bar(x2,y2) 
plt.show() 
+0

:ちょうどaxの他のすべてのプロパティを保持しながら、それらを削除するには、そのすべてのエントリに削除またはImportanceOfBeingErnestが指摘したように、単純にフルコンテナを削除バーコンテナをループして呼び出すことができます一度だけ、BarContainer、bars.remove()を完全に削除しないでください。 – ImportanceOfBeingErnest

+0

私はあなたのソリューションを試してみました:thrugh 'bars'をループし、1つのステップでバーを削除します。新しいax.bar(x2、y2)の後、矩形は再び青ですが、私の他の設定もちろん)、タイトル、yのように、x limsは同じで、ありがとう! – user3598726

関連する問題