python - examples - Cómo guardar una trama de Seaborn en un archivo
seaborn python install (9)
Algunas de las soluciones anteriores no funcionaron para mí.
El atributo
.fig
no se encontró cuando lo intenté y no
.savefig()
usar
.savefig()
directamente.
Sin embargo, lo que funcionó fue:
sns_plot.figure.savefig("output.png")
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.
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 el
output.png
final exista y se vea así:
¿Cómo puedo resolver el problema?
Debería poder utilizar el método
sns_plot
de
sns_plot
directamente.
sns_plot.savefig("output.png")
Para mayor claridad con su código, si desea acceder a la figura
sns_plot
en la que reside
sns_plot
, puede obtenerla directamente con
fig = sns_plot.fig
En este caso, no hay
get_figure
método
get_figure
como asume su código.
Elimine
get_figure
y simplemente use
sns_plot.savefig(''output.png'')
df = sns.load_dataset(''iris'')
sns_plot = sns.pairplot(df, hue=''species'', size=2.5)
sns_plot.savefig("output.png")
Esto funciona para mi
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'')
Las soluciones sugeridas son incompatibles con Seaborn 0.8.1
dando los siguientes errores porque la interfaz Seaborn ha cambiado:
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
Las siguientes llamadas le permiten acceder a la figura (compatible con Seaborn 0.8.1):
swarm_plot = sns.swarmplot(...)
fig = swarm_plot.get_figure()
fig.savefig(...)
como se vio anteriormente en esta respuesta .
ACTUALIZACIÓN: Recientemente he usado el objeto PairGrid de seaborn para generar un diagrama similar al 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 por
fig = myGridPlotObject.fig
Como se sugirió anteriormente en otras publicaciones de este hilo.
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.
sns_plot = sns.pairplot(data, hue=''species'', size=3)
sns_plot.savefig("output.png")
También es posible crear un objeto de
figure
matplotlib y luego usar
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
Uso
distplot
y
get_figure
para guardar la imagen con éxito.
sns_hist = sns.distplot(df_train[''SalePrice''])
fig = sns_hist.get_figure()
fig.savefig(''hist.png'')
sns.figure.savefig("output.png")
un error al usar
sns.figure.savefig("output.png")
en seaborn 0.8.1.
En su lugar use:
import seaborn as sns
df = sns.load_dataset(''iris'')
sns_plot = sns.pairplot(df, hue=''species'', size=2.5)
sns_plot.savefig("output.png")