更改x / y列而不编辑原始ggplot命令

时间:2016-11-29 19:37:46

标签: r ggplot2

(我将使用mtcars库中的gcookbook数据框。)

假设我生成以下情节:

p <- (ggplot(mtcars, aes (col = factor(cyl), x = wt, y = disp)) 
   + geom_point (shape = 19) 
   + geom_text (aes(y=disp+0.1,label=hp), size = 2.5, vjust=0) 
   + stat_smooth(method=lm))
plot(p)

enter image description here

我是否可以更改,例如xycol,而无需返回并编辑原文?

例如,假设我想将x更改为mpg,将col更改为gear。我想运行类似的东西,

p + ggplot(aes=aes (col = factor(gear), x = mpg))
plot(p)

但是第一个命令给出错误:

Error: Don't know how to add o to a plot

有没有办法更改绘图中使用的列而无需返回并编辑原始命令?

1 个答案:

答案 0 :(得分:2)

要改变情节的整体美感,您可以:

p + aes(color = factor(gear), x = mpg)

要更改特定图层的美感,您可以通过指定新变量手动更改对象p。但这似乎很脆弱。

要更改示例中geom_text图层的美学映射:

p$layers[[2]]$mapping$label = mtcars$wt
p$layers[[2]]$mapping$y = mtcars$disp + 2