R qqplot aes_中的函数和数据列的函数

标签 r function ggplot2

我有一个包含许多列的数据框,其中包含变量 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")

enter image description here 你觉得合适吗?

关于R qqplot aes_中的函数和数据列的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33276913/

相关文章:

r - 带有ggplot2的多面饼图

r - 如何降低用于运行 R ShinyApp 的 ECS Fargate 的成本

python - 如何通过单击 PyQt 中的按钮将参数传递给函数?

c - 如何在不使用任何内置函数的情况下将整数转换为 C 字符串,反之亦然以及其他数据类型?

r - 在 R 中,有没有办法根据一系列数字为渐变上的绘图点着色?

R,ggplot2 - 在图例中,如何在一个几何图形中隐藏未使用的颜色,同时在其他几何图形中显示它们?

r - 所有ggplot2命令中都出现异常错误

r - 使用 R Shiny 添加页面刷新按钮

c - 使用c将pre_color替换为post_color的函数

r - R中下一整年的上个月年值