创建后修改ggplot对象

时间:2017-01-30 15:48:46

标签: r ggplot2

创建后是否有一种首选的方法来修改ggplot个对象?

例如,我建议我的学生将r对象与pdf文件一起保存以供以后更改...

library(ggplot2)
graph <- 
  ggplot(mtcars, aes(x=mpg, y=qsec, fill=cyl)) +
  geom_point() +
  geom_text(aes(label=rownames(mtcars))) +
  xlab('miles per galon') +
  ggtitle('my title')

ggsave('test.pdf', graph)
save(graph, file='graph.RData')

如果他们不得不更改标题或标签或其他东西,他们可以轻松加载对象并更改简单的东西。

load('graph.RData')
print(graph)
graph + 
  ggtitle('better title') +
  ylab('seconds per quarter mile')

我需要做些什么才能将颜色更改为离散比例?在原始图中,我将y包裹在as.factor中。但之后有办法吗? 或者,当数据为gone时,是否有更好的方法来修改对象。很想得到一些建议。

1 个答案:

答案 0 :(得分:19)

您可以使用ggplot_build()在没有代码或数据的情况下更改绘图:

示例图:

data("iris")

p <- ggplot(iris) + 
  aes(x = Sepal.Length, y = Sepal.Width, colour = Species) + 
  geom_point()

颜色分别为Species

使用ggplot_build()

反汇编图
q <- ggplot_build(p)

看一下对象q,看看这里发生了什么。 要更改点的颜色,您可以在q

中更改相应的表格
q$data[[1]]$colour <- "black"

使用ggplot_gtable()

重新组合绘图
q <- ggplot_gtable(q)

并绘制它:

plot(q)

现在,积分是黑色的。