ggplot更新而不是添加图层

时间:2015-02-17 14:29:53

标签: r ggplot2

我知道有办法更新给定ggplot图的设置。

我想保存两个文件,一个是标准设置为png,另一个是pdf,但标签大小不同。

df <- data.frame(a=c('a;b;c','d;e;f'), b=c('A;B;C','D;E;F'),
                 x=c(1,2), y=c(2,3))

g <- ggplot(df, aes(x,y)) + geom_point() + geom_text(aes(label=a))

ggsave('test1.png',g)
ggsave('test2.pdf',g + geom_text(aes(label=a), size=10))

有没有办法删除或更新旧的geom_text图层而不只是在图表中添加图层?

3 个答案:

答案 0 :(得分:2)

一种选择是使用更简单的基本对象g,然后添加所需的图层

g <- ggplot(df, aes(x,y)) + geom_point()

ggsave('test1.png', g + geom_text(aes(label=a)))
ggsave('test2.pdf', g + geom_text(aes(label=a), size=10))

答案 1 :(得分:2)

查看str(g)并更新相关位,在您的情况下应该可以正常工作:

g$layers[[2]]$geom_params$size <- 10

答案 2 :(得分:2)

您还可以将size参数放在aes内,然后使用scale_size_manual来获得不同的比例。

g <- ggplot(df, aes(x,y)) + 
  geom_point() + 
  geom_text(aes(label=a, size="size"), show_guide = FALSE)
g + scale_size_manual(values=c(size = 10))