pandas.Series 히스토그램 플롯을 파일에 저장


82

ipython Notebook에서 먼저 pandas Series 객체를 만든 다음 인스턴스 메서드 .hist ()를 호출하여 브라우저에 그림이 표시됩니다.

이 그림을 파일에 저장하는 방법이 궁금합니다 (마우스 오른쪽 버튼을 클릭하고 다른 이름으로 저장하는 것이 아니라 스크립트에 필요한 명령).

답변:


165

다음 Figure.savefig()과 같이 방법을 사용하십시오 .

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

로 끝날 필요는 없으며 pdf많은 옵션이 있습니다. 문서를 확인하십시오 .

또는 pyplot인터페이스 를 사용하고을 savefig함수로 호출 하여 가장 최근에 생성 된 Figure를 저장할 수 있습니다.

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

5
이 오류 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 pltplt.close().
Acumenus 2010 년

하나의 루프와 여러 그림을 수행 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()Philip Cloud의 답변에서 제안한 것보다 실질적인 이점이 없으므로 가장 미적으로 만족스러운 옵션을 선택할 수 있습니다. 실제로 다음 get_figure()을 반환합니다self.figure .

# Source from snippet linked above
def get_figure(self):
    """Return the `.Figure` instance the artist belongs to."""
    return self.figure
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.