pyplot 绘图冻结(没有响应)

问题描述 投票:0回答:5

我正在努力使用 matlpotlib 库中的 pyplot。当我尝试创建绘图时,图形已经冻结了:

plt.figure()
plt.ion()
ax1 = plt.subplot(211) #Here it freezes
plt.title('test', fontsize=8)
plt.xlim(-1700, 1700)
plt.ylabel('x-axis')
plt.xlabel('y-axis')
plt.grid()
plt.show()
...do something else

我只使用过 Pyqt 绘图,但这次我想在没有多线程的情况下解决我的问题,因为我不关心绘图是否会暂时停止我的代码。问题是,脚本不会停止,而是继续运行,并且不会等到图形完全创建。 (time.sleep() 没有帮助)。有没有没有线程的解决方案?

干杯, 詹姆斯

Ps.:如果我在代码后面添加断点并在调试模式下运行,就没有问题(显然)。

python matplotlib plot freeze
5个回答
6
投票

对我来说,它的工作原理是:

import matplotlib
matplotlib.use('TkAgg')

3
投票

这个功能是否如你所愿?

import matplotlib.pyplot as plt

plt.figure()
plt.ion()
ax1 = plt.subplot(211) #Here it freezes
plt.title('test', fontsize=8)
plt.xlim(-1700, 1700)
plt.ylabel('x-axis')
plt.xlabel('y-axis')
plt.grid()
plt.draw() # draw the plot
plt.pause(5) # show it for 5 seconds
print("Hallo") # continue doing other stuff

0
投票

使用 plt.clf 是一个简单的插件,可以在绘图完成后关闭图形。

import matplotlib.pyplot as plt

plt.figure()
plt.ion()
ax1 = plt.subplot(211) 
plt.title('test', fontsize=8)
plt.xlim(-1700, 1700)
plt.ylabel('x-axis')
plt.xlabel('y-axis')
plt.grid()
plt.show()
plt.clf() # Here is another path

0
投票

fig = plt.figure()
也会导致我的 PyQt5 冻结。

我不知道确切的原因,但找到了很好的解决方法并且对我有用。

解决方法:

from matplotlib.Figure import Figure
fig1 = Figure()
ax1 = fig1.add_subplot()

您可以找到更多示例 https://pythonspot.com/pyqt5-matplotlib/


0
投票

添加

plt.show(block=True)
也有效

© www.soinside.com 2019 - 2024. All rights reserved.