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

时间:2015-04-03 03:43:52

标签: r ggplot2

我有一个数据框filter,它是数据框df2的子集,它是使用dyplr的mutate()函数制作的。

我想遍历一些列并使用它们制作散点图。

我的循环:

colNames <- names(filter)[9:47]
for(i in colNames){
  ggplot(filter, aes(x=i, y=CrimesPer10k)) +
    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")
}

但我没有输出,也没有任何错误。

我做错了什么?

1 个答案:

答案 0 :(得分:10)

您需要在print()循环中明确ggplot() for返回的对象,因为在那里(以及其他一些地方)关闭了自动print()

您还需要使用aes_string()代替aes(),因为您没有i使用filter作为filter中的实际变量,而是作为包含字符的字符串<{1}}中的变量(依次)将被绘制。

以下是实现这两个方面的示例:

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)
}