【问题标题】:modifying ggplot objects after creation创建后修改ggplot对象
【发布时间】:2017-01-31 00:19:21
【问题描述】:

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 时,是否有更好的方法来修改对象。很想得到一些建议。

【问题讨论】:

  • 你可以看看 Rcolorbrewer 包。我做了几次,我会制作绘图,将其存储为一个对象,最后当我使用上面的许多对象构建报告时,我会使用 color brewer 并更改配色方案。
  • 如果您保存了绘图对象,则数据并没有真正消失(查看str(graph)),因此您可以使用ggplot(graph$data, aes(... 重做绘图,或者您可以更新映射即graph$mapping$fill &lt;- quote(factor(cyl))

标签: r ggplot2


【解决方案1】:

您可以使用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)

现在,这些点是黑色的。

【讨论】:

  • 这是一个非常有用的答案。但是,您知道将 q 变回与原始 ggplot 相同的对象需要什么吗?目前,这与 +ggsave() 和 +ggtitle() 之类的东西不兼容,添加到 q 中会非常好
  • @jntrcs 目前你可以这样做:q = ggplot_build(ggplot_plot)q$data[[1]]$size = 0.2q = ggplot_gtable(q)ggsave(filename, plot=q)来保存编辑后的图。 (只是指出这一点,因为 2 年内没有人这样做)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-13
  • 1970-01-01
  • 2021-10-16
相关资源
最近更新 更多