【问题标题】:how to stop pyplot from popping up figures如何阻止pyplot弹出数字
【发布时间】:2016-03-20 10:47:35
【问题描述】:

我使用如下循环将多个绘图写入 pdf。它有效,但有两个非常烦人的问题,

1) 当循环运行时,我看到很多窗口(“图 1”)弹出。我认为命令plt.close(fig) 没有按预期工作。这真的很烦人,因为它运行时我可能正在做其他事情,而这些弹出窗口挡住了我对其他任务的看法。

2) 可能与 1) 有关,内存使用量急剧上升。在我的真实脚本中,绘制 50 页图表会消耗 > 32 Gb 的内存。怎么可能?!

with PdfPages('Manyplots.pdf') as pdf:
  for j in xrange(100):
    fig = plt.figure(1, figsize=(5,5))
    for fr in xrange(9):
      pp = fig.add_subplot(3,3,fr+1)
      pp.imshow(x, cmap=plt.cm.gray)
    pdf.savefig()
    plt.close(fig)

我的问题是

1) 情节完成后有什么方法可以关闭图形?

2) 更好的是,如何抑制空白图形弹出,因为它确实应该在后台写入外部文件,

3) 有没有更好的方法将一系列绘图保存到 PDF 的多页?

【问题讨论】:

  • 对于 1 和 2,可以去掉 imshow 调用吗?
  • 不确定您的意思?请详细说明。
  • 你使用的是什么版本的 matplotlib?什么操作系统?我无法在 Ubuntu 14.04 上使用 matplotlib 1.5 重现此问题。
  • ubuntu 14.04,matplotlib 1.4.2,python 2.7.6
  • 您是通过脚本还是交互方式运行它?在您的 matplotlibrc 文件中,您是否看到 interactive : True(朝向顶部,在后端下方)?

标签: python memory matplotlib pdfpages


【解决方案1】:

找到问题的原因。我的主脚本包括某人的实用程序脚本的import,它导入 pyplot 并有一个额外的行,

import matplotlib.pyplot as plt
plt.ion()

plt.ion 被注释掉时,弹出窗口就消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 2013-08-10
    • 2021-10-01
    • 2020-05-04
    • 1970-01-01
    相关资源
    最近更新 更多