[英]Visual Stdio Code, PyCharm, and Thonny behave differently running simple matplotlib demo code
我想使用 Python 的 matplotlib 以 3D 和實時方式顯示一些傳感器數據。 我的出發點是嘗試從網絡上的眾多示例之一中繪制一個正弦波。 如果你願意的話,一個“Hello World”。
我開始在我相當新的 Windows 11 PC 上全新安裝 PyCharm。 此設置適用於不涉及 matplotlib 的內容。 過了一會兒,我得出結論,PyCharm 只是沒有按我預期的方式工作,為了好玩,它使用 Thonny 運行代碼(是的,我有幾個 Raspberry Pi),它按預期工作。 正因為可以,我使用 Visual Studio Code 2022 嘗試了相同的代碼。它的工作方式與 PyCharm 不同。
PyCharm 和 VS Code 將輸出打印的“值”並打開“圖形”窗口,但不會顯示正弦波圖。 最終,“數字”窗口會對兩者都顯示“沒有響應”。 Thonny 輸出與預期一致,並且沒有“未響應”消息。
我看到的唯一區別是 PyCharm 和 VS Code 使用虛擬環境,而 Thonny 沒有。
我承認我不是抽屜里最鋒利的刀,並且會感激建議。
編輯——此外,從命令行運行代碼(Windows 終端(管理員)的行為與 PyCharm 和 VS Code 相同。/編輯
有問題的代碼是:
import numpy as np
import time
import matplotlib.pyplot as plt
figure, ax = plt.subplots(figsize=(4,5))
x = np.linspace(0, 20, 80)
y = np.sin(x)
plt.ion()
plot1, = ax.plot(x, y)
plt.xlabel("X-Axis",fontsize=18)
plt.ylabel("Y-Axis",fontsize=18)
for value in range(25):
update_y_value = np.sin(x-2.5*value)
plot1.set_xdata(x)
plot1.set_ydata(update_y_value)
figure.canvas.draw()
figure.canvas.flush_events()
time.sleep(0.05)
print(value)
plt.show()
我一度對此感到困惑,基本上是為了在屏幕上顯示圖形,如果直接在機器上運行會容易得多,因為默認情況下虛擬終端無法訪問您的屏幕。 有辦法繞過它並為他們提供這種訪問權限( https://virtualizationreview.com/articles/2017/02/08/graphical-programs-on-windows-subsystem-on-linux.aspx ),但通常很多使用 CMD 之類的東西從 Windows 本地運行程序更容易(或者似乎 Thonny 為您工作)。 您可能還想根據您的工作考慮試用 Jupyter Notebook。 過去,使用像 WSL 這樣的虛擬子系統給我帶來了很多問題。
我終於找到了一個例子,我可以用它作為我真正想做的事情的起點。 以下示例可在所有 VS Code、PyCharm 和 Thonny IDE 中可靠運行。
那個狡猾的小“plt.pause(1e-17)”似乎有很大的不同。
import numpy as np
import matplotlib.pyplot as plt
xdata = []
ydata = []
axes = plt.gca()
axes.set_xlim(0, 100)
axes.set_ylim(-2, +2)
line, = axes.plot(xdata, ydata, 'r-')
x = np.linspace(0, 19, 100)
y = np.sin(x)
plt.xlabel("X-Axis", fontsize=18)
plt.ylabel("Y-Axis", fontsize=18)
for value in range(100):
xdata.append(value)
ydata.append(y[value])
line.set_xdata(xdata)
line.set_ydata(ydata)
plt.pause(1e-17)
plt.show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.