1

我正在编写一个脚本来从数据中生成许多图,每个图首先保存为plt.savefig(),然后显示为plt.show()。在第一阶段,我希望显示所有绘图并为每个绘图停止脚本,以允许调整例如轴限制、比例、标签。

在第二阶段,当我在 LaTex 中包含这些图并完成布局时,我希望所有图都保存为 pdf,而在我重新执行脚本进行最终编辑时不会弹出它们。

是否有一个简单的命令可以在我的脚本中预先禁用plt.show(),以便脚本可以在第二阶段在后台运行?

我知道我可以plt.ion()用来制作plt.show()非阻塞,但是不断弹出窗口,使我的注意力从我的乳胶编辑器窗口中移开(我在 Ubuntu 上)。

4

1 回答 1

0

您问的问题并不完全正确,但要理解答案,您需要对matplotlib. 有pyplot一个基于状态机的层与 ipython 一起工作以模仿MATLAB类似的体验。这是建立在一个界面之上的OO(你真的应该将它用于脚本,而不是pyplot,但我离题了)。该OO层知道如何绘制到 acanvas以及如何转换数据 -> 抽象漂亮的线条。由canvas多种后端之一提供,这些后端知道如何将抽象的漂亮线条 -> 实际的漂亮线条。默认情况下,您可能正在使用GTKAgg后端或TKAgg后端,它们将线条绘制到嵌入在 gui 中的画布上,并且都是交互式后端。

您只需要第二次使用非交互式后端即可。

在您的脚本中包括:

import matplotlib
matplotlib.use('PDF')

在导入之前pyplot,并在需要交互式图形时注释掉该行。

于 2013-05-26T17:19:38.837 回答