如何遍历列名并为每个列名制作一个 ggplot 散点图
How do I loop through column names and make a ggplot scatteplot for each one
我有一个数据帧 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")
}
但我没有得到任何输出,也没有任何错误。
我做错了什么?
您需要在 for
循环中显式 print()
ggplot()
返回的对象,因为自动 print()
ing 在此处(以及其他一些地方)已关闭).
您还需要使用 aes_string()
代替 aes()
,因为您没有使用 i
作为 filter
中的实际变量,而是作为包含以下内容的字符串filter
中要绘制的变量(依次)。
这是一个实现这两者的示例:
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)
}
我有一个数据帧 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")
}
但我没有得到任何输出,也没有任何错误。
我做错了什么?
您需要在 for
循环中显式 print()
ggplot()
返回的对象,因为自动 print()
ing 在此处(以及其他一些地方)已关闭).
您还需要使用 aes_string()
代替 aes()
,因为您没有使用 i
作为 filter
中的实际变量,而是作为包含以下内容的字符串filter
中要绘制的变量(依次)。
这是一个实现这两者的示例:
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)
}