0

这是一个直接涉及此主题的增量问题:

如何遍历列名并为每个列名制作一个 ggplot 散点图

我想遍历列名并为每个列创建一个 ggplot 散点图,但我想每次添加一条横线,其截距取决于列中的值。

所以我采用该代码:

Y <- rnorm(100)
df <- data.frame(A = rnorm(100), B = runif(100), C = rlnorm(100),
                 Y = Y)
colNames <- names(df)[1:3]
for(i in colNames){
  plt <- ggplot(df, aes_string(x=i, y = Y)) +
    geom_point(color="#B20000", size=4, alpha=0.5) +
    geom_hline(yintercept=0, size=0.06, color="black") + 
    geom_smooth(method=lm, alpha=0.25, color="black", fill="black")
  print(plt)
  Sys.sleep(2)
}

我用 x 切换 y

aes_string(x=Y, y = i))

我想修改那条线

geom_hline(yintercept=0, size=0.06, color="black")

...因此 yintercept 不是恒定的,而是取决于 i,例如:

geom_hline(yintercept=c(quantile(i, 0.25)))

所以 yintercept 始终是我的专栏的第一个四分位数。

但是,它不起作用:

(1 - h) * qs[i] 中的错误:二元运算符的非数字参数

我尝试了不同的选项,例如 aes_string、paste() 等,但都没有奏效。

但是,它不起作用: (1 - h) * qs[i] 中的错误:二进制运算符的非数字参数

我尝试了不同的选项,例如 aes_string、paste() 等,但都没有奏效。

4

1 回答 1

0

您应该调用quantile(df[,i], 0.25)而不是quantile(i, 0.25)它应该可以工作,您的代码将是:

for(i in colNames){
  plt <- ggplot(df, aes_string(x=Y, y = i)) +
    geom_point(color="#B20000", size=4, alpha=0.5) +
    geom_hline(yintercept=c(quantile(df[,i], 0.25)))+
    geom_smooth(method=lm, alpha=0.25, color="black", fill="black")
  print(plt)
  Sys.sleep(2)
}
于 2016-08-17T13:43:35.650 回答