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

标签 r ggplot2

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

假设我生成了以下图:

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

是否有任何方法可以更改图中使用的列,而无需返回并编辑原始命令?

最佳答案

要更改情节的整体美感,您可以执行以下操作:

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 

关于r - 更改 x/y 列而不编辑原始 ggplot 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40874389/

相关文章:

read.csv 参数 stringsAsFactors 不起作用?

r - 消除R中美国电话号码前面的前导 '1'

r - 图例与来自不同数据帧的多个图的交互作用 : How does one deal with this interaction?

r - 从 TraMineR 中提取数据以用于其他绘图包(例如 ggplot2)

r - 在 R 图中绘制交互

r - ggadjustedcurves 错误 : Must use a vector in '[' , 不是类矩阵的对象

r - 与数据框中最接近的非 NA 值的距离

r - 用 R 中的线条按组绘制多个数据集

r - 在 scale_x_discrete 中创建下标

r - 非高斯分布的 ggplot2 和 QQ 图