ggplot2似乎在R函数中无法正常工作

3

我对R有点陌生 - 我一直在尝试将一个R脚本包装成一个函数,以便我可以从Rserve中调用它。有人知道为什么ggplot2在函数内部不起作用,但在函数外部却可以正常工作吗?

png('polarity.png')
ggplot(sent_df, aes(x=polarity)) +
  geom_bar(aes(y=..count.., fill=polarity)) +
  scale_fill_brewer(palette="RdGy") +
  labs(x="polarity categories", y="number of conversatins") +
  opts(title = "Sentiment Analysis of Posts on Facebook\n(classification by polarity)",
       plot.title = theme_text(size=12))
dev.off()

这可能与ggplot2在函数或S4中使用时会出现错误有关,但我没有找到可以检测到的错误 - 我只是没有输出结果。


1
Dirkзҡ„еӣһзӯ”еә”иҜҘеҸҜд»Ҙи§ЈеҶідҪ зҡ„й—®йўҳпјҢдҪҶжҳҜеҸҰеӨ–дҪ иҝҳеә”иҜҘжӣҙж–°дҪ зҡ„ggplot2зүҲжң¬пјҲoptsе·Із»Ҹиў«ејғз”ЁпјүпјҢ并且дҪҝз”Ёggsave()дҝқеӯҳggplotsйҖҡеёёжӣҙеҘҪгҖӮ - Gregor Thomas
1个回答

16

这是一个R常见问题解答 -- 你需要在它周围加上print(),或者使用对ggplot2特定的ggsave()

从常见问题解答中得知:

7.22为什么lattice/trellis绘图不能正常工作?

最可能的原因是您忘记让R显示图形。像xyplot()这样的Lattice函数会创建一个图形对象,但不会显示它(ggplot2图形和S-Plus中的Trellis图形也是如此)。该图形对象的print()方法产生实际的显示效果。当您在命令行交互式地使用这些函数时,结果会自动打印出来,但在source()或您自己的函数内部,则需要显式地调用print()语句。


1
ggsave() 只保存到文件,不显示。 - smci
print(g) 可能无法呈现某些对象。请参见 https://dev59.com/3lwZ5IYBdhLWcg3wbv7r,该建议使用 grid.draw() - Dave X
但是当我在控制台中输入时,为什么不需要这样做呢? - pitosalas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接