ggplot 中的 ggsave() 用于 python 不保存

and*_*ens 4 python ggplot2

我已将 ggplot 导入 python 并运行以下脚本,希望 ggsave() 实际上将我的绘图保存在某处,但是它似乎实际上并未将任何内容写入 .png 文件以供以后使用。当我在解释器中将它作为 p 返回时返回该图,但我必须手动保存它。

import ggplot

#d as some pandas dataframe

k = [2,3,4,5]

for i in k:
    p = ggplot(d, aes(x='x', y='y', color='cluster'+str(i))) + geom_point(size=75) + ggtitle("Cluster Result: "+str(i))
    file_name = "Clusters_"+str(i)+'.png'  
    #this is not saving to any directory  
    ggsave(p,file=file_name)
Run Code Online (Sandbox Code Playgroud)

这是解释器中的输出...但没有文件保存到任何目录。

Saving 11.0 x 8.0 in image.
Saving 11.0 x 8.0 in image.
Saving 11.0 x 8.0 in image.
Saving 11.0 x 8.0 in image.
Saving 11.0 x 8.0 in image.
Saving 11.0 x 8.0 in image.
Run Code Online (Sandbox Code Playgroud)

Pet*_*ire 5

您找不到图形的原因是它们保存在当前工作目录中。如果您没有更改任何内容,这将是您的 Python 的默认目录。调用os.getcwd()以获取您当前的目录,然后去那里查看您的图表。或者,您可以通过在调用时定义路径将所有内容保存到预定位置ggsave

ggsave(plot = p, filename = file_name, path = "C:\Documents\Graphs")
Run Code Online (Sandbox Code Playgroud)

我还想指出 User3926962 在 的命名方法方面很接近,ggsave但是如果您使用首先列出的绘图值定义参数,那么您还需要指定 p 是绘图。你需要这样做的原因是因为ggsave在调用绘图之前调用文件名,所以如果你运行:

ggsave(p, filename = file_name)
Run Code Online (Sandbox Code Playgroud)

你会得到错误:

类型错误:ggsave() 为参数“文件名”获得了多个值

要解决这个问题,只需定义你的情节:

ggsave(plot = p, filename = file_name)
Run Code Online (Sandbox Code Playgroud)

来源:

ggsave(filename = None, plot = None, device = None, format = None,
               path = None, scale = 1, width = None, height = None, units = "in",
               dpi = 300, limitsize=True, **kwargs)
Run Code Online (Sandbox Code Playgroud)

关联

  • 它已被 `ggplot` 类上的 `save()` 方法取代:`p.save(filename, width=None, height=None, dpi=180)`。来源:[https://github.com/yhat/ggpy/blob/master/ggplot/ggplot.py#L536](https://github.com/yhat/ggpy/blob/master/ggplot/ggplot.py# L536) (4认同)
  • 断开的链接。看起来 ggsave 已从 Python 的 `ggplot` 中删除 (3认同)