5
我試圖創建生動的情節,其更新爲可用的數據交互。現場matplotlib陰謀
import os,sys
import matplotlib.pyplot as plt
import time
import random
def live_plot():
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlabel('Time (s)')
ax.set_ylabel('Utilization (%)')
ax.set_ylim([0, 100])
ax.set_xlim(left=0.0)
plt.ion()
plt.show()
start_time = time.time()
traces = [0]
timestamps = [0.0]
# To infinity and beyond
while True:
# Because we want to draw a line, we need to give it at least two points
# so, we pick the last point from the previous lists and append the
# new point to it. This should allow us to create a continuous line.
traces = [traces[-1]] + [random.randint(0, 100)]
timestamps = [timestamps[-1]] + [time.time() - start_time]
ax.set_xlim(right=timestamps[-1])
ax.plot(timestamps, traces, 'b-')
plt.draw()
time.sleep(0.3)
def main(argv):
live_plot()
if __name__ == '__main__':
main(sys.argv)
上述代碼有效。然而,我無法與plt.show()
產生窗口交互我如何可以繪製實時的數據,同時還能夠與繪圖窗口進行交互?
我很困惑..如果循環僅在'plt.pause()'期間運行,那麼我不必指定一個大的暫停時間段來確保它可以接收和處理所有的命令鼠標拖動 - 拉伸/縮放/等)?你能修改我的例子來描述你的意思嗎? –
讓你的例子就像現在一樣,用'plt.pause(0.3)'替換'time.sleep(0.3)'。你不需要很長的停頓時間,因爲你有一個短暫的停頓時間,無休止地繼續。如果你的代碼在暫停命令之間花費的時間很少,那麼一切都應該平穩運行。 – kazemakase