【发布时间】:2017-12-02 07:35:38
【问题描述】:
我正在创建一些数据的小提琴图,然后我将带有单个数据点(示例中的红点)的散点图渲染到三个子图。
由于小提琴图的生成相对耗时,我只生成一次小提琴图,然后为一个数据行添加散点图,写入结果文件,从轴上删除散点图并添加下一个散点图排。
一切正常,但我想添加选项,在保存之前显示()每个图。
如果我使用plt.show(),则该图显示正确,但之后该图似乎已清除,并且在下一次迭代中,我将获得没有小提琴图的图。
plt.show()之后有什么办法可以保留图的内容吗?
简而言之,我的代码是
fig = generate_plot(ws, show=False) #returns the fig instance of the violin plot
#if I do plt.show() here (or in "generate_plot()"), the violin plots are gone.
ax1, ax3, ax2 = fig.get_axes()
scatter1 = ax1.scatter(...) #draw scatter plot for first axes
[...] #same vor every axis
plt.savefig(...)
scatter1.remove()
【问题讨论】:
-
我也有类似的情况。这个帖子有帮助吗?我现在正在读书。 stackoverflow.com/questions/21875356/…
-
plt.show()意味着在脚本结束时只调用一次。之后,该图形从 pyplot 状态机中删除,这样对plt.show()的第二次调用将不再显示该图形。您仍然可以使用fig.savefig()而不是plt.savefig()来保存它。但这无助于再次展示它。所以你最好使用交互模式或FuncAnimation或事件循环内的一些事件处理。
标签: python python-3.x matplotlib