Программное создание и сохранение графиков в (I) Python без предварительной визуализации их на экране - PullRequest
0 голосов
/ 27 февраля 2019

Вот фиктивный скрипт, который создает три графика и сохраняет их в 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's

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

, поскольку ничегоотображается на экране, но PDF сохраняется.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Aha.Частично основываясь на предложении о дублировании (которое не было в точности дубликатом), это работает:

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, а затем установите его обратно на то, что выпривык к.

0 голосов
/ 27 февраля 2019

Я отсылаю вас к этому StackOverflow ответу , который цитирует эту статью в качестве ответа.В ответе SO они также предлагают plt.ioff(), но обеспокоены тем, что он может отключить другие функции, если вы захотите.

...