ggplot2 没有图形因为 ggsave 不保存

1 投票
1 回答
1620 浏览
提问于 2025-04-17 08:20

我有一个用Python写的脚本,使用了pyper这个库(它可以和R语言进行连接),我想从ggplot2中获取一些输出。我尝试了'ggsave'方法和'device(...); dev.off()'方法,但都没有任何输出。

我必须使用pyper,因为我在各个地方都使用64位的环境(包括Python和R),所以rpy[2]对我来说不是一个选择。

我的代码大致是这样的:

r("png(filename='test.png',width=720,height=540)")  #comment if ggsave
r("p<-ggplot(DB,aes(X,Y,group=cfg))")
r("""p <- p + geom_path(aes(colour=factor(f1))) + scale_x_log10('X label') +
  scale_y_continuous('Y label',breaks=myb,labels=myl) + 
  geom_point(data=subset(DB,pts==dot),aes(colour=factor(f1),size=factor(f2),
  shape=factor(f3))) + labs(colour='l1',size='l2',shape='l3')""")
r("print(p)")
# r("ggsave(filename='test.png',width=10,height=7.5)   #comment out if using png
r("dev.off()")                # comment if using ggsave

无论哪种方法都没有生成文件。我已经检查过数据库的数据表,里面有很多条记录(上千条)。我该尝试什么呢?

1 个回答

2

这其实是一个关于库和环境变量的问题。有些加载的库,比如ggplot2,并没有加载所有需要的依赖库,比如digest库。这个错误只会在代码的“print(p)”那部分出现。

另外,x64库的位置也有一些差异,需要正确设置。确保你的R_HOME和R_LIBS变量与你的配置相匹配。

Pyper似乎没有告诉我哪些库没有加载,它只是继续运行,所以qplot在R中最开始并没有加载。把它放到正确的位置后,你需要确保总是使用你的用户账户或者管理员账户(或者你可以在R_LIBS中设置多个路径,但我没有尝试过)。

只要库加载正确,qplot和ggsave就能正常工作。

感谢所有努力工作的人和调试的指导!

撰写回答