Intenté el siguiente código ( 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()
Pero me sale este error:
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'
Espero que la final output.png
exista y se vea así:
¿Cómo puedo resolver el problema?
python
pandas
matplotlib
seaborn
Neversaint
fuente
fuente
Python 2.7.12
yseaborn 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')
Respuestas:
Retire el
get_figure
y simplemente usesns_plot.savefig('output.png')
fuente
AttributeError: 'AxesSubplot' object has no attribute 'savefig'
Las soluciones sugeridas son incompatibles con Seaborn 0.8.1
dando los siguientes errores porque la interfaz Seaborn ha cambiado:
Las siguientes llamadas le permiten acceder a la figura (compatible con Seaborn 0.8.1):
como se vio anteriormente en esta respuesta .
ACTUALIZACIÓN: Recientemente he usado el objeto PairGrid de seaborn para generar una trama similar a la de este ejemplo . En este caso, dado que GridPlot no es un objeto de trazado como, por ejemplo, sns.swarmplot, no tiene la función get_figure (). Es posible acceder directamente a la figura matplotlib mediante
Como se sugirió anteriormente en otras publicaciones de este hilo.
fuente
Algunas de las soluciones anteriores no funcionaron para mí. El
.fig
atributo no se encontró cuando lo intenté y no pude usarlo.savefig()
directamente. Sin embargo, lo que funcionó fue:Soy un nuevo usuario de Python, por lo que no sé si esto se debe a una actualización. Quería mencionarlo en caso de que alguien más se encuentre con los mismos problemas que yo.
fuente
seaborn.swarmplot
, pero paraseaborn.lmplot
eso no funcionará. Conseaborn.lmplot
, encontrésns_plot.savefig("output.png")
trabajado como en la respuesta de Salvatore, pero sin necesidad deget_figure()
llamar.Debería poder utilizar el
savefig
métodosns_plot
directamente.Para mayor claridad con su código, si desea acceder a la figura matplotlib que
sns_plot
reside, puede obtenerlo directamente conEn este caso, no hay ningún
get_figure
método como se supone en su código.fuente
Yo uso
distplot
yget_figure
para guardar la imagen con éxito.fuente
sns.distplot()
depython 3.5.6
conseaborn 0.9.0
. Además, la funciónsns.pairplot()
no necesita la línea deget_figure()
Menos líneas para los buscadores de 2019:
NOTA DE ACTUALIZACIÓN:
size
se cambió aheight
.fuente
Esto funciona para mi
fuente
También es posible crear un
figure
objeto matplotlib y luego usarplt.savefig(...)
:fuente
sns.figure.savefig("output.png")
Obtendría un error al usar seaborn sea 0.8.1.En su lugar use:
fuente
Solo para su información, el siguiente comando funcionó en seaborn 0.8.1, así que supongo que la respuesta inicial sigue siendo válida.
fuente