我的数据集包含几个分类变量,我想通过这些变量来查看分布。
例如,如果我想在ggplot2中的mpg数据集中可视化4个变量(manufacturer,trans,fl,class),我必须编写4行代码:
ggplot(mpg, aes(manufacturer)) + geom_bar() + coord_flip()
ggplot(mpg, aes(trans)) + geom_bar() + coord_flip()
ggplot(mpg, aes(fl)) + geom_bar() + coord_flip()
ggplot(mpg, aes(class)) + geom_bar() + coord_flip()
结果条形图:
如何编写代码以更有效地执行此操作?环?应用功能?如果可能的话,我想一次看一张图表。
答案 0 :(得分:3)
您使用lapply
的想法是一种解决方案。
这需要aes_string
代替aes
。
单个地块
这会创建您作为lapply
的第一个参数提供的每列(名称)的单个图:
lapply(c("manufacturer", "trans", "fl", "class"),
function(col) {
ggplot(mpg, aes_string(col)) + geom_bar() + coord_flip()
})
合并图
如果您需要在一个绘图区域中使用所有绘图,则可以使用miscset::ggplotGrid
:
library(miscset) # install from CRAN if required
ggplotGrid(ncol = 2,
lapply(c("manufacturer", "trans", "fl", "class"),
function(col) {
ggplot(mpg, aes_string(col)) + geom_bar() + coord_flip()
}))
结果如下: