сохранить график гистограммы pandas.Series в файл


85

В ipython Notebook сначала создайте объект серии pandas, затем, вызвав метод экземпляра .hist (), браузер отобразит рисунок.

Мне интересно, как сохранить этот рисунок в файл (я имею в виду не щелчок правой кнопкой мыши и сохранение как, а команды, необходимые в сценарии).

Ответы:


173

Используйте Figure.savefig()метод, например:

ax = s.hist()  # s is an instance of Series
fig = ax.get_figure()
fig.savefig('/path/to/figure.pdf')

Необязательно заканчиваться pdf, есть много вариантов. Ознакомьтесь с документацией .

Кроме того, вы можете использовать pyplotинтерфейс и просто вызвать savefigфункцию как функцию для сохранения последней созданной фигуры:

import matplotlib.pyplot as plt
s.hist()
plt.savefig('path/to/figure.pdf')  # saves the current figure

7
если вы получаете эту ошибку AttributeError: 'numpy.ndarray' object has no attribute 'get_figure', вероятно, вы строите несколько столбцов, например s.hist(columns=['colA', 'colB']). В этом случае axэто будет массив всех осей. Можете попробовать ax[0].get_figure()илиax[0][0].get_figure()
toto_tico

1
Два участка коплю повторно. Но он перезаписывает первый сюжет, а второй выглядит как сумма двух сюжетов. Кто-нибудь знает, как решить эту проблему?
Capan

1
@bukowski Добавить import matplotlib.pyplot as pltи plt.close().
Acumenus

Если вы делаете цикл и несколько фигур, то можно сделать fig.clf()очистку фигуры.
tommy.carstensen

7

Вы можете использовать ax.figure.savefig():

import pandas as pd

s = pd.Series([0, 1])
ax = s.plot.hist()
ax.figure.savefig('demo-file.pdf')

Это не имеет практической пользы по сравнению с тем, ax.get_figure().savefig()что предлагается в ответе Филипа Клауда, поэтому вы можете выбрать вариант, который вам наиболее эстетичен. Фактически get_figure()просто возвращаетself.figure :

# Source from snippet linked above
def get_figure(self):
    """Return the `.Figure` instance the artist belongs to."""
    return self.figure
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.