簡體   English   中英

如何在 matplotlib 的圖中添加數據?

[英]How to add a data to the plot in matplotlib?

我怎樣才能得到線圖,數據一一出現? 我有代碼

import matplotlib.pyplot as plt

plt.ion()
plt.plot(1, 2)
plt.pause(2.5)
plt.plot(2, 5)
plt.pause(2.5)

但它不顯示線,如果我在plot函數中添加'o'選項或將plot函數更改為scatter點函數,它工作正常,但我想要一條沒有標記的線,我該怎么做?

我嘗試了以下代碼,根據我的測試,它僅在繪圖是在外部窗口中生成時才有效:

import matplotlib.pyplot as plt

plt.ion()
fig = plt.figure()
ax = fig.add_subplot(111)
ax.grid(True)

x = [4, 1, 5, 3, 8]
y = [1, 2, 9, 0, 2]

ax.set_xlim(0, 9)
ax.set_ylim(-1, 10)

for j in range(1, len(x)):
     X = [x[j-1], x[j]]
     Y = [y[j-1], y[j]]
     ax = plt.plot(X, Y, mew = 5, ms = 5)
     # mew and ms used to change crosses size
     plt.pause(1)# one second of delay
     plt.show()     

如果您正在使用 Spyder,為了讓解釋器在您調用繪圖時生成外部窗口,您必須輸入

%matplotlib qt

在解釋器上(而不是在腳本文件中!)在運行前面的代碼行之前

為了回應關於“刪除當前繪圖”的評論,並稍微改進 Stefano 的回答,我們可以使用 Matplotlib 的面向對象接口來執行此操作:

import matplotlib.pyplot as plt

x = [0, 1, 2, 3, 4, 5, 6]
y = [3, 1, 4, 1, 5, 9, 2]

fig, ax = plt.subplots()
ax.set(xlim=(min(x), max(x)), ylim=(min(y), max(y)))

plt.ion()

(line,) = ax.plot([], [])  # initially an empty line

timestep = 0.5  # in seconds

for i in range(1, len(x) + 1):
    line.set_data(x[:i], y[:i])
    plt.pause(timestep)
plt.show(block=True)

此版本使用單個Line2D對象並通過set_data修改其基礎數據。 由於 Matplotlib 不必繪制多個對象,只需繪制一條線,因此一旦數據變大,它應該可以更好地擴展。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM