作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含许多列的数据框,其中包含变量 x、y、z、w 的每个时间点的聚合值 ...an:时间 x_mean x_sd y_mean y_sd z_mean y_sd w_mean w_sd ...
现在我想编写一个函数,使用 ggplot2 绘制均值和围绕它的 +/-1SD 的置信带。目前我的代码如下:
plotfunc <- function(ds1,val) {
val_mean <- paste(val,"_mean",sep="")
val_p_sd <- paste(val,"_mean + ",val,"_sd",sep="")
val_m_sd <- paste(val,"_mean - ",val,"_sd",sep="")
ggplot() + geom_line(data=ds1,aes_q(x=as.name("TIME"),y=as.name(val_mean),color="good")) +
geom_ribbon(data=ds1,aes_q(x=as.name("TIME"),ymin=as.name(val_m_sd),ymax=as.name(val_p_sd),alpha=0.3,fill="good"))
}
我这样调用它:
plotfunc(df,"x")
它提示:
Error in eval(expr, envir, enclos) : object 'x_mean - x_sd' not found
如何获取上限和下限?我需要使用 substitute
还是 quote
?
最佳答案
我使用了 aes_string
并更正了您函数代码中的一些语法错误:- 颜色“好”未知- 指定为固定值的颜色参数因此必须位于 aes
函数
df = data.frame("TIME"=11:20, "x_mean"=rnorm(10, mean=10), "x_sd"=rnorm(10, mean=1, sd=0.1),
"y_mean"=rnorm(10, mean=12), "y_sd"=rnorm(10, mean=2, sd=0.2))
plotfunc <- function(ds1,val) {
val_mean <- paste(val,"_mean",sep="")
val_p_sd <- paste(val,"_mean + ",val,"_sd",sep="")
val_m_sd <- paste(val,"_mean - ",val,"_sd",sep="")
ggplot() + geom_line(data=ds1,aes_string(x=as.name("TIME"),y=as.name(val_mean)),color="red") +
geom_ribbon(data=ds1,aes_string(x=as.name("TIME"),ymin=as.name(val_m_sd),ymax=as.name(val_p_sd)),alpha=0.3,fill="blue")
}
plotfunc(df,"x")
关于R qqplot aes_中的函数和数据列的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33276913/
我是一名优秀的程序员,十分优秀!