我正在编写一个脚本,以便从数据中生成许多绘图,每个绘图首先用plt.savefig()保存,然后由plt.show()显示。在第一阶段,我希望显示所有的图,并为每个图停止脚本,以允许调整,例如轴限制,比例,标签。
在第二阶段,当我在LaTex中包含这些图并完成布局时,我希望所有的图都保存到pdf中,而不会在重新执行脚本进行最终编辑时弹出。
有没有一个简单的命令可以放在我的脚本前面禁用plt.show(),这样在第二阶段脚本就可以在后台运行了?
我知道我可以使用plt.ion()来实现plt.show()的非阻塞,但那会不断弹出窗口,把我的注意力从我的latex编辑器窗口(我在Ubuntu上)上移开。
发布于 2013-05-27 01:19:39
您提出的问题并不正确,但要理解答案,您需要对matplotlib的体系结构有一些了解。还有pyplot,这是一个基于状态机的层,旨在与ipython一起工作,以模仿类似MATLAB的体验。这是建立在OO接口之上的(您实际上应该将其用于脚本,而不是pyplot,但我离题了)。OO层知道如何绘制canvas,以及如何转换数据->抽象的漂亮线条。canvas是由多种后端中的一种提供的,这些后端知道如何将抽象的漂亮行变成实际的漂亮行。默认情况下,您可能正在使用GTKAgg后端或TKAgg后端,这两个后端都是交互式后端,它们将线条绘制到嵌入在gui中的画布。
你只需要使用第二次通过的非交互式后端。
在您脚本中包括:
import matplotlib
matplotlib.use('PDF')在导入pyplot之前,当您想要交互图形时,注释掉这一行。
https://stackoverflow.com/questions/16761694
复制相似问题