首页 > 解决方案 > 使用 apply 和 ggplot 在 R 中制作多个条形图

问题描述

我有来自调查的数据(1300 行和 12 列),我想为所有列制作条形图(我已经删除了所有 NA 值)。

q1 <- rep(c("yes", "no"), 10)
q2 <- rep(c("no", "yes"), 10)
q3 <- 20:39
data <- cbind.data.frame(q1,q2,q3)```

我正在使用以下代码,但我似乎无法获得 x 轴的正确标签(应该只是列名)。

lapply(data[,c(1:3)], function(variable) ggplot(data = data,
                                     mapping = aes(variable)) + 
         geom_bar() + labs(x = variable, y = "count"))

标签: rggplot2dplyrapply

解决方案


实现所需结果的一种选择是循环变量名称并使用.data代词,rlang如下所示:

q1 <- rep(c("yes", "no"), 10)
q2 <- rep(c("no", "yes"), 10)
q3 <- 20:39
data <- data.frame(q1, q2, q3)

library(ggplot2)

lapply(names(data), function(variable) {
  ggplot(
    data = data,
    mapping = aes(.data[[variable]])
  ) +
    geom_bar() +
    labs(x = variable, y = "count")
})
#> [[1]]

#> 
#> [[2]]

#> 
#> [[3]]


推荐阅读