1
標準のボイラープレートコードを使用して、各バーの上に「カウント」ラベルが付いた単純な棒グラフを描画します。データが変わると、この棒グラフが更新されています。私は正常にライブグラフを更新することができます。コードは次のとおりです。グラフを更新するときにpylab/matplotlibを使用してラベルを更新する
fig, ax = plt.subplots()
def my_graph():
y_pos = np.arange(len(data_list))
rects1 = ax.bar(y_pos, count_list, 0.28, color='r')
# plt.bar(y_pos, count_list, 0.28, color='b', align='center', alpha=0.5)
ax.set_xticks(y_pos, data_list)
ax.set_xticklabels(data_list, rotation='vertical')
ax.set_ylabel('Counts')
ax.set_title('Some stats ')
plt.plot()
plt.ylim([0, 50])
autolabel(rects1)
def autolabel(rects):
# attach some text labels
for rect in rects:
height = rect.get_height()
ax.text(rect.get_x() + rect.get_width()/2., 1.05 * height,
'%d' % int(height), ha='center', va='bottom')
これは標準ボイラープレートコードです。私のメインでは、次のようにします。
if __name__ == "__main__":
my_graph()
plt.ion()
while True:
time.sleep(3)
get_updated_data()
my_graph()
plt.pause(0.01)
get_updated_dataは、新しいデータを取得し、グラフを生成するコードを呼び出します。これはバーを正しく更新しています。ただし、各バーの上に追加されたラベルは上書きされません。グラフがリフレッシュされるたびに、それらは互いに積み重なります。これを修正する適切な方法は何ですか?私はfig.canvas.draw()を試しましたが、動作していません。たぶん私は間違った場所に追加しています。適切なアプローチは何ですか?
おかげ
完全な作業コードを表示できますか? –
そこにはすべてのプロットコードがあります。他のものは私がここに置くことができないデータのものです。データ部分は適切な値を持つcount_listとdata_listを生成するだけです –