programing

Seaborn 플롯을 파일에 저장하는 방법

copyandpastes 2023. 2. 1. 22:18
반응형

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_figuremethod를 참조해 주세요.

사용하고 있다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

반응형