Я попробовал следующий код ( 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
будет существовать и выглядеть так:
Как я могу решить проблему?
python
pandas
matplotlib
seaborn
neversaint
источник
источник
Python 2.7.12
иseaborn 0.7.1
seaborn 0.9
:sns.regplot(x='age', y='income', data=pd.read_csv('income_data.csv')).get_figure().savefig('income_f_age.png')
Ответы:
Вынуть
get_figure
и просто использоватьsns_plot.savefig('output.png')
источник
AttributeError: 'AxesSubplot' object has no attribute 'savefig'
Предлагаемые решения несовместимы с Seaborn 0.8.1.
выдавая следующие ошибки, потому что интерфейс Seaborn изменился:
Следующие вызовы позволяют получить доступ к рисунку (совместим с Seaborn 0.8.1):
как видно ранее в этом ответе .
ОБНОВЛЕНИЕ: я недавно использовал объект PairGrid из seaborn для создания графика, похожего на тот, что в этом примере . В этом случае, поскольку GridPlot не является объектом графика, как, например, sns.swarmplot, у него нет функции get_figure (). Прямой доступ к фигуре matplotlib можно получить
Как ранее предлагалось в других сообщениях в этой теме.
источник
Некоторые из вышеперечисленных решений не работают для меня.
.fig
Атрибут не был найден , когда я пытался , что и я не мог использовать.savefig()
напрямую. Однако, что сработало:Я новичок в Python, поэтому не знаю, связано ли это с обновлением. Я хотел упомянуть об этом на тот случай, если кто-нибудь столкнется с теми же проблемами, что и я.
источник
seaborn.swarmplot
, но дляseaborn.lmplot
этого не сработает. Сseaborn.lmplot
, я нашелsns_plot.savefig("output.png")
работает, как в ответе Сальваторе, но без необходимостиget_figure()
вызова.Вы должны просто быть в состоянии использовать
savefig
методsns_plot
напрямую.Для ясности с вашим кодом, если вы хотите получить доступ к фигуре matplotlib, которая
sns_plot
находится в ней, вы можете получить ее напрямую с помощьюВ этом случае нет
get_figure
метода, как предполагает ваш код.источник
Я использую
distplot
и,get_figure
чтобы сохранить изображение успешно.источник
sns.distplot()
вpython 3.5.6
сseaborn 0.9.0
. Кроме того, функцияsns.pairplot()
не нуждается в строкеget_figure()
Меньше строк для поисковиков 2019 года:
ПРИМЕЧАНИЕ ОБНОВЛЕНИЯ:
size
было изменено наheight
.источник
Это работает для меня
источник
Также возможно просто создать
figure
объект matplotlib и затем использоватьplt.savefig(...)
:источник
Вы получите ошибку при использовании
sns.figure.savefig("output.png")
в seaborn 0.8.1.Вместо этого используйте:
источник
Просто к вашему сведению, приведенная ниже команда работала в seaborn 0.8.1, поэтому я думаю, что первоначальный ответ все еще действителен.
источник