You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中使用ggplot绘制多布尔变量条形图的实现问题

在R中使用ggplot绘制多布尔变量条形图的实现问题

嗨,我来帮你搞定这个需求!你的数据是88行、13列的布尔型数据框,要画一个坐标翻转的条形图,把13个列名放在x轴,每列的TRUE数量作为条形高度,用ggplot完全可以轻松实现,而且完全不需要用到你提到的那个'key'。

首先,先解决你没有样本数据的问题——我教你生成一个和你的数据结构完全一致的模拟数据集,这样你可以直接测试代码:

# 设置随机种子让结果可复现
set.seed(123)
# 生成88行13列的布尔值数据框
df <- data.frame(matrix(sample(c(TRUE, FALSE), 88*13, replace = TRUE), nrow = 88))
# 给列名命名(你可以换成自己的实际列名)
colnames(df) <- paste0("变量", 1:13)

接下来是核心步骤:因为ggplot更适合处理长格式数据,我们需要先把你的宽格式数据转换成长格式,然后统计每列的TRUE数量。这里用tidyverse工具包(包含ggplot2、dplyr、tidyr)来处理会非常方便:

# 加载tidyverse包(如果没安装先运行install.packages("tidyverse"))
library(tidyverse)

# 转换数据格式并统计每列TRUE的数量
df_summary <- df %>%
  # 把所有列转成两列:一列是列名,一列是对应的值
  pivot_longer(everything(), names_to = "变量名称", values_to = "布尔值") %>%
  # 按变量名称分组
  group_by(变量名称) %>%
  # 统计每个组里TRUE的数量(TRUE在R中等价于1,sum直接得到数量)
  summarise(TRUE数量 = sum(布尔值))

现在有了统计好的数据,就可以绘制条形图了,用coord_flip()实现坐标翻转:

ggplot(df_summary, aes(x = 变量名称, y = TRUE数量)) +
  # 用stat="identity"因为我们已经统计好了数值,不需要ggplot再计算
  geom_bar(stat = "identity", fill = "#4682B4") +
  # 翻转坐标,让变量名称显示在x轴(垂直方向)
  coord_flip() +
  # 添加标签和标题
  labs(x = "变量名称", y = "TRUE的数量", title = "各布尔变量的TRUE数量统计") +
  # 用简洁的主题
  theme_minimal()

如果你不习惯用tidyverse,也可以用基础R的方法来统计,再传给ggplot:

# 基础R统计每列TRUE的数量
true_counts <- colSums(df)
# 转成ggplot需要的数据框格式
df_summary_base <- data.frame(变量名称 = names(true_counts), TRUE数量 = true_counts)

# 绘制图形
ggplot(df_summary_base, aes(x = 变量名称, y = TRUE数量)) +
  geom_bar(stat = "identity") +
  coord_flip()

这样两种方法都能得到你想要的图形,选你顺手的就行~

备注:内容来源于stack exchange,提问作者Socsi2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 14:19:40