我试图想出一种干净的方法来绘制 R 数据框中所有列的网格视图。问题是我的数据帧中有离散值和数值。为简单起见,我们可以使用 R 提供的样本数据集,称为iris。我会par(mfrow(x, y))用来分割我的图,也许mapply会循环遍历每一列?我不确定这里什么是最好的。
我在想类似于:
ggplot(iris, aes(Sepal.Length))+geom_density()
Run Code Online (Sandbox Code Playgroud)
而是为每一列绘制。我担心的是“物种”列是离散的。也许“geom_density”不是在这里使用的正确图,但我们的想法是在一个图中查看每个数据框的变量分布——甚至是离散的。离散值的条形图将用于此目的。基本上我正在尝试执行以下操作:
任何想法或建议将不胜感激!
您可以使用该功能plot_grid从cowplot包。此函数采用由生成ggplot并创建新图的图列表,将它们组合在网格中。
首先,创建一个图表列表lapply,geom_density用于数字变量和geom_bar其他所有内容。
my_plots <- lapply(names(iris), function(var_x){
p <-
ggplot(iris) +
aes_string(var_x)
if(is.numeric(iris[[var_x]])) {
p <- p + geom_density()
} else {
p <- p + geom_bar()
}
})
Run Code Online (Sandbox Code Playgroud)
现在我们只需调用plot_grid.
plot_grid(plotlist = my_plots)
Run Code Online (Sandbox Code Playgroud)