Python 如何使用Matplotlib保存使用ggplot生成的图像?

Python 如何使用Matplotlib保存使用ggplot生成的图像?,python,matplotlib,python-ggplot,Python,Matplotlib,Python Ggplot,当这部分工作时 import matplotlib.pyplot as plt from ggplot import * import numpy as np import pandas as pd df = pd.DataFrame({'Height':np.random.randn(10), 'Weight':np.random.randn(10), 'Gender': ["Male","Male","Male",

当这部分工作时

import matplotlib.pyplot as plt
from ggplot import *
import numpy as np
import pandas as pd

df = pd.DataFrame({'Height':np.random.randn(10),
                   'Weight':np.random.randn(10),
                   'Gender': ["Male","Male","Male","Male","Male",
                              "Female","Female","Female","Female","Female"]})
p=ggplot(aes(x='Height', y='Weight', color='Gender'), data=df)  + geom_point()
p.make()
fig = plt.gcf()
ax = plt.gca()
fig.set_figwidth(25, forward=True)
plt.show()
当我试图保存图像时,它不幸地无法生成一个空白图像

plt.savefig("image.tiff", dpi=300)

有什么想法吗?谢谢

您是否尝试过使用
ggsave(plot=p,filename='image.tiff')
p.save('image.tiff')

编辑
已从ggplot中删除ggsave,请改用第二种解决方案。

我使用ggplot对象方法成功地将图形保存到文件中。以下是一个例子:

p.save('image.tiff', width=12, height=8, dpi=144)
有关更多信息,请参阅@Johan在SO回复中的评论、找到的源代码或找到的示例中的示例

就设置屏幕大小而言,当前的API似乎不可能做到这一点。一种可能的黑客行为是克隆回购协议并修改如下:

self.fig, self.subplots = plt.subplots(subplot_kw=subplot_kw, figsize=(my_x, my_y)
其中my_x和my_y是屏幕显示所需的x和y尺寸。然后使用
show
方法:

p.show()
多亏了所有的评论,这才是最终有效的。代码中有一点重复,但它最终起作用了

import matplotlib.pyplot as plt
from ggplot import *
import numpy as np
import pandas as pd

df = pd.DataFrame({'Height':np.random.randn(10),
                   'Weight':np.random.randn(10),
                   'Gender': ["Male","Male","Male","Male","Male",
                              "Female","Female","Female","Female","Female"]})
p=ggplot(aes(x='Height', y='Weight', color='Gender'), data=df)  + geom_point()
p.make()
fig = plt.gcf()
ax = plt.gca()

w,h=25,10 #set width and height for both screen and file size

#this part prints on screen the chart
fig.set_figwidth(w, forward=True)  #screen
fig.set_figheight(h, forward=True) #screen
plt.show()

#this part saves it to file
p.save(filename, width=w, height=h, dpi=300) #file

尝试plt.savefig(“image.tiff”,bbox_inches='tight')并尝试使用序列plt.savefig(“image.tiff”,bbox_inches='tight')plt.show()plt.close(),这可能是由引用的引起的。解决方法是始终将其另存为png并使用外部程序将其转换为tiff。ggplot中不提供ggsave,而p.save会忽略我用fig.set_figwidth(25,forward=True)指定的新宽度
p.save(filename,width=None,height=None,dpi=180)
谢谢。我想要的是一致的“屏幕”和“文件”图像大小。使用p.save,我可以以所需的宽度保存图像,问题是,在显示器上,该图像仍将保留在一个小盒子4x4中。您可以试试这个吗<代码>将matplotlib作为mpl导入,然后将mpl.rcParams[“figure.figsize”]=“11,8”谢谢。我想要的是一致的“屏幕”和“文件”图像大小。使用p.save,我可以将图像保存到所需的宽度,问题是,在屏幕上,图像仍将保留在一个小盒子中4x4。我不清楚屏幕大小是否可以轻松设置。我刚刚编辑了上面的回复,加入了一个可能的解决方法。