matplotlib - plt.figure() 冻结问题
我有一个函数,它用来绘制图形,然后把图形保存成png文件。简化的代码如下:
def render_plot(self, parameter1, parameter2):
dates = get_my_dates()
values = get_my_values()
fig = plt.figure() # freezes here when calling render_plot for the 2nd or 3rd time!
ax = fig.add_subplot(111)
... # performing some calculations and drawing plots
ax.plot_date(dates, values, '-', marker='o')
plt.savefig("media/plot.png")
plt.cla()
plt.clf()
plt.close()
这个函数在执行到“fig = plt.figure()”这一行时会卡住(CPU使用率达到100% - 是不是进入了无限循环?),但只有在第二次或第三次调用这个函数时才会出现这种情况,第一次调用时一切正常,图形也绘制得很好。可能是什么原因呢?
2 个回答
-1
这可能不是问题的原因,但首先,你不需要
ax=fig.add_subplot(111)
你可以试试直接用
ax = plt.gca()
然后,注释掉
plt.close()
这可能会有帮助。只是个猜测。
0
使用 fig = plt.figure()
这行代码会导致我的 PyQt5 程序卡住。
我不太清楚具体原因,但我找到了一种不错的解决方法,对我来说有效。
解决方法是:
从 matplotlib.Figure
导入 Figure
然后用 fig1 = Figure()
创建一个新的图形对象,
接着用 ax1 = fig1.add_subplot()
添加一个子图。