我想使用Python的matplotlib来显示一些3D和实时的传感器数据。我的出发点是尝试从网络的众多例子中画出正弦波。“你好世界”如果你愿意的话。
首先,我在我相当新鲜的Windows11PC上重新安装了PyCharm。这个设置对于不涉及matplotlib的事情很好。过了一会儿,我得出结论,PyCharm只是没有按照我预期的方式工作,为了好玩,我用Thonny运行了代码(是的,我有几个Raspberry Pis),它的工作就像预期的那样。因为我可以,所以我使用Visual代码2022尝试了相同的代码。它不像PyCharm那样起作用。
PyCharm和VS代码将输出打印的“值”并打开“数字”窗口,但不会显示正弦波图。最终,“数字”窗口会对两者都说“没有回应”。Thonny输出和预期的一样,没有“不响应”的消息。
我看到的唯一不同是,PyCharm和VS代码使用虚拟环境,而Thonny不使用虚拟环境。
我承认我不是抽屉里最锋利的刀子,我会感激你的建议。
编辑--而且,从命令行(Windows终端(管理))运行代码的方式与PyCharm和VS代码的运行方式相同。/Edit
有关守则是:
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()发布于 2022-07-06 22:34:20
我一度对此感到困惑,基本上是因为在屏幕上显示图形--如果直接在机器上运行就容易多了,因为默认情况下,虚拟终端无法访问屏幕。有一些方法可以绕过它,并给予他们这种访问权限(https://virtualizationreview.com/articles/2017/02/08/graphical-programs-on-windows-subsystem-on-linux.aspx),但通常情况下,使用类似CMD之类的东西从Windows本地运行程序就容易多了(或者看起来Thonny为您工作过)。你也可以考虑尝试木星笔记本,这取决于你在做什么。过去,使用像WSL这样的虚拟子系统给我带来了很多问题。
发布于 2022-07-08 20:57:00
我终于找到了一个例子,我可以用它作为我真正想要做的事情的起点。以下示例在所有VS代码、PyCharm和Thonny中都可靠地运行。
那种运动鞋般的小"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()https://stackoverflow.com/questions/72890439
复制相似问题