Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 禁用/跳过显示()_Python_Matplotlib_Plot - Fatal编程技术网

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渲染器
。但情节看起来是一样的,所以我可以忽略它。