如何在R中绘制数据框两列的分组频次柱状图
在R中绘制分组柱状图展示列内Y/N/U的频次
要实现你需要的效果,核心是先把宽格式数据转换为长格式,再用ggplot2绘制分组柱状图,具体步骤如下:
1. 处理数据格式并统计频次
先将原始的宽数据转成长格式,同时统计每列中Y、N、U的出现次数:
# 加载包含ggplot2和数据处理工具的tidyverse包 library(tidyverse) # 你的原始数据框 t1 <- data.frame(c1=c("Y","N","U","Y","N","U"),c2=c("Y","N","N","U","U","Y")) # 转换为长格式并统计每个列下各类别的频次 t1_long <- t1 %>% pivot_longer(cols = everything(), names_to = "数据列", values_to = "类别") %>% count(数据列, 类别)
2. 绘制分组柱状图
利用处理好的长数据生成并排的分组柱状图:
ggplot(t1_long, aes(x = 数据列, y = n, fill = 类别)) + # 设置条形并排显示,避免堆叠 geom_col(position = position_dodge(width = 0.8)) + # 自定义坐标轴和标题文本 labs(x = "数据列", y = "出现次数", title = "各列Y/N/U出现频次分布") + # 自定义类别对应的填充颜色(可选,可根据需求调整) scale_fill_manual(values = c("Y" = "#27ae60", "N" = "#c0392b", "U" = "#bdc3c7")) + # 使用简洁的主题样式 theme_minimal()
运行后会得到以c1、c2为x轴主分组,每个主分组下分别展示Y、N、U三个独立条形,条形高度对应各自出现次数的柱状图。
内容的提问来源于stack exchange,提问作者niks1
相关产品推荐
相关产品推荐

