【问题标题】:Programmatically making and saving plots in (I)python without rendering them on the screen first以编程方式在 (I)python 中制作和保存绘图,而无需先在屏幕上渲染它们
【发布时间】:2019-07-20 12:39:23
【问题描述】:

这是一个虚拟脚本,它制作三个图并将它们保存为 PDF。

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

df = pd.DataFrame({"A":np.random.normal(100),
                   "B":np.random.chisquare(5, size = 100),
                   "C":np.random.gamma(5,size = 100)})

for i in df.columns:
    plt.hist(df[i])
    plt.savefig(i+".pdf", format = "pdf")
    plt.close()

我正在使用 spyder,它使用 IPython。当我运行这个脚本时,三个窗口向我弹出然后消失。它有效,但有点烦人。

如何使数字保存为 pdf 而不会在我的屏幕上呈现?

我正在寻找类似 R 的东西

pdf("path/to/plot/name.pdf")
commands
dev.off()

因为屏幕上没有呈现任何内容,但 pdf 被保存。

【问题讨论】:

标签: python graphics ipython spyder


【解决方案1】:

啊哈。部分基于重复的建议(不完全是重复的),这是可行的:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

df = pd.DataFrame({"A":np.random.normal(100),
                   "B":np.random.chisquare(5, size = 100),
                   "C":np.random.gamma(5,size = 100)})

import matplotlib
old_backend = matplotlib.get_backend()
matplotlib.use("pdf")

for i in df.columns:
    plt.hist(df[i])
    plt.savefig(i+".pdf", format = "pdf")
    plt.close()

matplotlib.use(old_backend)

基本上,将后端设置为 pdf 设备之类的设备,然后将其设置回您习惯的任何设备。

【讨论】:

    【解决方案2】:

    我指的是这个StackOverflow answer 引用这个article 作为答案。在 SO 答案中,他们还建议 plt.ioff(),但担心如果您需要它可能会禁用其他功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多