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.pngexista y se vea así:
¿Cómo puedo resolver el problema?
python
pandas
matplotlib
seaborn
Neversaint
fuente
fuente


Python 2.7.12yseaborn 0.7.1seaborn 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_figurey 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
.figatributo 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.lmploteso 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
savefigmétodosns_plotdirectamente.Para mayor claridad con su código, si desea acceder a la figura matplotlib que
sns_plotreside, puede obtenerlo directamente conEn este caso, no hay ningún
get_figuremétodo como se supone en su código.fuente
Yo uso
distplotyget_figurepara guardar la imagen con éxito.fuente
sns.distplot()depython 3.5.6conseaborn 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:
sizese cambió aheight.fuente
Esto funciona para mi
fuente
También es posible crear un
figureobjeto 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