Seaborn 플롯을 파일에 저장하는 방법
다음 코드를 시험해 보았습니다.test_seaborn.py
):
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
matplotlib.style.use('ggplot')
import seaborn as sns
sns.set()
df = sns.load_dataset('iris')
sns_plot = sns.pairplot(df, hue='species', size=2.5)
fig = sns_plot.get_figure()
fig.savefig("output.png")
#sns.plt.show()
하지만 다음 오류가 발생합니다.
Traceback (most recent call last):
File "test_searborn.py", line 11, in <module>
fig = sns_plot.get_figure()
AttributeError: 'PairGrid' object has no attribute 'get_figure'
나는 기말고사를 기대한다.output.png
존재하며 다음과 같이 됩니다.
어떻게 하면 문제를 해결할 수 있을까요?
다음의 콜을 사용하면, 이 그림에 액세스 할 수 있습니다(Seaborn 0.8.1 호환성이 있습니다.
swarm_plot = sns.swarmplot(...)
fig = swarm_plot.get_figure()
fig.savefig("out.png")
이 답변에서 보듯이
제안된 솔루션은 Seaborn 0.8.1과 호환되지 않습니다.Seaborn 인터페이스가 변경되었기 때문에 다음과 같은 오류가 발생합니다.
AttributeError: 'AxesSubplot' object has no attribute 'fig'
When trying to access the figure
AttributeError: 'AxesSubplot' object has no attribute 'savefig'
when trying to use the savefig directly as a function
업데이트: 최근에 사용한PairGrid
이 예시와 유사한 플롯을 생성하기 위해 seaborn의 객체를 사용합니다.이 경우,GridPlot
예를 들어 다음과 같은 플롯 객체가 아닙니다.sns.swarmplot
, 없습니다.get_figure()
기능.다음과 같이 matplotlib 그림에 직접 액세스할 수 있습니다.
fig = myGridPlotObject.fig
위의 솔루션 중 일부는 나에게 효과가 없었다.그.fig
시도했을 때 속성을 찾을 수 없어서 사용할 수 없었습니다..savefig()
직접적으로.그러나 효과가 있었던 것은 다음과 같습니다.
sns_plot.figure.savefig("output.png")
저는 새로운 Python 사용자이기 때문에 업데이트 때문인지 알 수 없습니다.나와 같은 문제에 부딪힐 경우를 대비해서 말하고 싶었어.
2019 검색기를 위한 줄 수 감소
import matplotlib.pyplot as plt
import seaborn as sns
df = sns.load_dataset('iris')
sns_plot = sns.pairplot(df, hue='species', height=2.5)
plt.savefig('output.png')
업데이트 노트:size
로 변경되었다.height
.
이 기능을 사용하면savefig
의 방법sns_plot
직접적으로.
sns_plot.savefig("output.png")
matplotlib 그림에 액세스하고 싶은 경우 코드를 알기 쉽게 하기 위해sns_plot
를 사용하여 직접 입수할 수 있습니다.
fig = sns_plot.fig
이 경우 없습니다.get_figure
method를 참조해 주세요.
사용하고 있다distplot
그리고.get_figure
사진 저장에 성공합니다.
sns_hist = sns.distplot(df_train['SalePrice'])
fig = sns_hist.get_figure()
fig.savefig('hist.png')
다른 답변을 얻을 수 없어서 matplotlib==3.2.1에서 사용할 수 있게 되었습니다. 특히 for loop 또는 반복적인 접근 방식 내에서 이 작업을 수행하는 경우에는 더욱 그렇습니다.
sns.scatterplot(
data=df_hourly, x="date_week", y="value",hue='variable'
)
plt.savefig('./f1.png')
plt.show()
saveconfig는 show call 이전이어야 합니다.그렇지 않으면 빈 이미지가 저장됩니다.
난 이거면 돼
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
sns.factorplot(x='holiday',data=data,kind='count',size=5,aspect=1)
plt.savefig('holiday-vs-count.png')
matplotlib만 작성할 수도 있습니다.figure
오브젝트 후 사용plt.savefig(...)
:
from matplotlib import pyplot as plt
import seaborn as sns
import pandas as pd
df = sns.load_dataset('iris')
plt.figure() # Push new figure on stack
sns_plot = sns.pairplot(df, hue='species', size=2.5)
plt.savefig('output.png') # Save that figure
를 사용하면 에러가 발생합니다.sns.figure.savefig("output.png")
seaborn 0.8.1에 있습니다.
대신 다음을 사용합니다.
import seaborn as sns
df = sns.load_dataset('iris')
sns_plot = sns.pairplot(df, hue='species', size=2.5)
sns_plot.savefig("output.png")
참고로, 아래 명령어는 seaborn 0.8.1에서 작동했기 때문에 초기 답변은 아직 유효하다고 생각합니다.
sns_plot = sns.pairplot(data, hue='species', size=3)
sns_plot.savefig("output.png")
언급URL : https://stackoverflow.com/questions/32244753/how-to-save-a-seaborn-plot-into-a-file
'programing' 카테고리의 다른 글
액티비티는?finish()는 Android에서 작동합니까? (0) | 2023.02.01 |
---|---|
MySQL에서 SELECT 문을 사용하여 테이블 이름 가져오기 (0) | 2023.02.01 |
프로그램 방식으로 SearchView를 열려면 어떻게 해야 합니까? (0) | 2023.02.01 |
MySQLi가 준비한 문 오류 보고 (0) | 2023.02.01 |
JPA를 사용한 맵 저장 (0) | 2023.02.01 |