我正在努力使用 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.:如果我在代码后面添加断点并在调试模式下运行,就没有问题(显然)。
对我来说,它的工作原理是:
import matplotlib
matplotlib.use('TkAgg')
这个功能是否如你所愿?
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
使用 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
fig = plt.figure()
也会导致我的 PyQt5 冻结。
我不知道确切的原因,但找到了很好的解决方法并且对我有用。
解决方法:
from matplotlib.Figure import Figure
fig1 = Figure()
ax1 = fig1.add_subplot()
您可以找到更多示例 https://pythonspot.com/pyqt5-matplotlib/
添加
plt.show(block=True)
也有效