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

如何用ggplot绘制多变量的1值计数合并柱状图?

解决方案

首先,先把你的数据集转换成R可识别的dataframe:

df <- data.frame(
  V1 = c(1, 0, 0, 1, 0, 1),
  V2 = c(0, 1, 1, 0, 0, 0),
  V3 = c(0, 0, 1, 1, 0, 1),
  V4 = c(1, 0, 0, 1, 0, 1)
)

接下来用tidyverse工具链完成数据转换、计数,再绘制整合后的柱状图:

  1. 加载依赖包
library(tidyverse)
  1. 转换数据格式并统计每个变量中1的出现次数
    这里有两种等价实现方式:
  • 方式一:先过滤出值为1的行,再按变量计数
count_df <- df %>%
  pivot_longer(cols = everything(), names_to = "variable", values_to = "value") %>%
  filter(value == 1) %>%
  count(variable, name = "count_of_1")
  • 方式二:直接对每个变量求和(因值仅为0和1,求和结果即为1的出现次数)
count_df <- df %>%
  pivot_longer(cols = everything(), names_to = "variable", values_to = "value") %>%
  group_by(variable) %>%
  summarize(count_of_1 = sum(value))
  1. 绘制整合后的柱状图
ggplot(count_df, aes(x = variable, y = count_of_1)) +
  geom_bar(stat = "identity", fill = "#2E86AB") + # stat="identity"直接使用y轴的计数数值
  labs(title = "各变量中1的出现次数", x = "变量名称", y = "1的出现次数") +
  theme_minimal()

关键说明

  • pivot_longer是将宽格式数据转为长格式的核心函数,它会把所有列的列名存入variable列,对应的值存入value列,让ggplot可以按变量分组绘图。
  • 针对0/1型变量,用sum(value)统计1的次数比过滤后计数更高效。

内容的提问来源于stack exchange,提问作者harry1027

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 00:36:21