在 R 中的网格上绘制变量集合
Plotting a collection of variables on a grid in R
我想学习一种将变量集合 p
(数据框列)绘制到网格中的好方法,而不是将每个变量写到 grid.arrange 函数中。
p <- c()
for (i in 1:length(names(df)) - 1){
p[i] <- qplot(df[i])
}
grid.arrange(p, ncol = 5)
我想要一种方法:grid.arrange(p[1], p[2], ..., p[n]
) 在网格中绘制每个图形。
pl = replicate(5, ggplot(), simplify = FALSE)
grid.arrange(grobs = pl)
请注意,您的策略可以进行一些改进:
- 预分配
p
与 p = vector(length = ncol(df)-1, mode="list")
会更好
p[[i]] <-
不是 p[i] <-
1:3 - 1
生成 0 1 2
,而 0
不是有效索引
- 在 ggplot/R 中处理长格式数据框(整齐的数据)更容易;尝试
reshape2::melt()
或 tidyr::gather()
和替代方案,这样您就可以避免在列名 上出现尴尬的循环
我想学习一种将变量集合 p
(数据框列)绘制到网格中的好方法,而不是将每个变量写到 grid.arrange 函数中。
p <- c()
for (i in 1:length(names(df)) - 1){
p[i] <- qplot(df[i])
}
grid.arrange(p, ncol = 5)
我想要一种方法:grid.arrange(p[1], p[2], ..., p[n]
) 在网格中绘制每个图形。
pl = replicate(5, ggplot(), simplify = FALSE)
grid.arrange(grobs = pl)
请注意,您的策略可以进行一些改进:
- 预分配
p
与p = vector(length = ncol(df)-1, mode="list")
会更好
p[[i]] <-
不是p[i] <-
1:3 - 1
生成0 1 2
,而0
不是有效索引- 在 ggplot/R 中处理长格式数据框(整齐的数据)更容易;尝试
reshape2::melt()
或tidyr::gather()
和替代方案,这样您就可以避免在列名 上出现尴尬的循环