각 보텀 위에 "카운트"레이블이있는 간단한 막대 그래프를 그리기위한 표준 보일러 플레이트 코드가 있습니다. 데이터가 변경되면이 막대 그래프를 실시간으로 업데이트하고 있습니다. 그래프를 성공적으로 업데이트 할 수 있습니다. 코드는 다음과 같습니다.그래프를 새로 고칠 때 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 만 생성합니다 –