Python 禁用/跳过显示()
我正在编写一个脚本,从数据生成许多绘图,每个绘图首先用Python 禁用/跳过显示(),python,matplotlib,plot,Python,Matplotlib,Plot,我正在编写一个脚本,从数据生成许多绘图,每个绘图首先用plt.savefig()保存,然后用plt.show()显示。 在第一阶段,我希望显示所有绘图,并停止每个绘图的脚本,以便调整轴限制、比例和标签等 在第二阶段,当我在LaTex中包含这些绘图并完成布局时,我希望所有绘图都保存到pdf中,而不会在重新执行脚本进行最终编辑时弹出 是否有一个简单的命令可以在我的脚本中放在前面,禁用plt.show(),这样脚本就可以在第二阶段的后台运行 我知道我可以使用plt.ion()使plt.show()无阻
plt.savefig()
保存,然后用plt.show()
显示。
在第一阶段,我希望显示所有绘图,并停止每个绘图的脚本,以便调整轴限制、比例和标签等
在第二阶段,当我在LaTex中包含这些绘图并完成布局时,我希望所有绘图都保存到pdf中,而不会在重新执行脚本进行最终编辑时弹出
是否有一个简单的命令可以在我的脚本中放在前面,禁用plt.show()
,这样脚本就可以在第二阶段的后台运行
我知道我可以使用
plt.ion()
使plt.show()
无阻塞,但这会不断弹出窗口,使我的注意力从latex编辑器窗口(我在Ubuntu上)上移开。你问的问题不太对,但要理解答案,您需要了解一点matplotlib
的体系结构。有一个pyplot
,它是一个基于状态机的层,用于与ipython协作,模拟类似于MATLAB
的体验。这是建立在OO
接口之上的(您真的应该将其用于脚本,而不是pyplot
,但我离题了)。OO
层知道如何绘制canvas
以及如何转换数据->抽象漂亮的线条。canvas
由多种后端之一提供,它们知道如何将抽象的漂亮线条转换为实际的漂亮线条。默认情况下,您可能正在使用GTKAgg
后端或TKAgg
后端,它们将线条绘制到嵌入gui的画布上,并且都是交互式后端
您只需要第二次使用非交互式后端即可
在脚本中包括:
import matplotlib
matplotlib.use('PDF')
导入
pyplot
之前,请在需要交互式图形时注释该行。谢谢,这很有效!我对matplotlib的结构有很好的理解,但我没有弄明白。我使用了plt.tight_layout()
,这给出了一个小警告:tight_layout:返回到Agg渲染器
。但情节看起来是一样的,所以我可以忽略它。