збережіть панд. Сюжет гістограми серій у файл


86

У ipython Notebook спочатку створіть об’єкт pandas Series, а потім, викликавши метод екземпляра .hist (), браузер відображає рисунок.

Мені цікаво, як зберегти цю цифру у файл (я маю на увазі не клацання правою кнопкою миші та збереження як, а команди, необхідні у сценарії).

Відповіді:


174

Використовуйте 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
Я зберігаю дві ділянки неодноразово. Але це замінює перший сюжет, а другий виглядає як сума двох сюжетів. Хтось знає, як вирішити цю проблему?
Капан

1
@bukowski Додати import matplotlib.pyplot as pltта plt.close().
Прозріння

Якщо хтось робить цикл і кілька фігур, тоді можна зробити, 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.