在R语言中绘制非标准图形的技术求助
R绘制分组条形图的实操提示
核心工具推荐
- 首选**
ggplot2**包,这是R里最常用的可视化工具,用geom_col()(适合已有统计好的数值)或geom_bar()(默认统计计数)就能画出你要的分组条形图。 - 配合**
dplyr**包做数据预处理,比如统计每个变异类型(Variants)下各比例类型(Ratio)的数量或占比,操作起来更顺手。
基础代码示例
假设你的数据是原始记录(每一行对应一条Variants+Ratio的条目),先看两种常见场景:
场景1:统计每个Variants下各Ratio的数量
# 先加载需要的包 library(ggplot2) library(dplyr) # 统计数据:按Variants和Ratio分组计数 summary_data <- your_data %>% group_by(Variants, Ratio) %>% tally() # 绘制并排分组条形图 ggplot(summary_data, aes(x = Variants, y = n, fill = Ratio)) + geom_col(position = "dodge") + # position="dodge"让同组的条形并排显示 labs(x = "变异类型", y = "数量", fill = "比例类型") + theme_bw() # 用简洁的白色主题
场景2:展示每个Variants下各Ratio的占比
# 统计各Ratio在对应Variants中的百分比 summary_data <- your_data %>% group_by(Variants) %>% mutate(total = n()) %>% # 先算每个Variants的总记录数 group_by(Variants, Ratio) %>% summarise(percent = n()/first(total)*100) # 计算占比 # 绘图,同时处理x轴标签拥挤的问题 ggplot(summary_data, aes(x = Variants, y = percent, fill = Ratio)) + geom_col(position = "dodge") + labs(x = "变异类型", y = "占比(%)", fill = "比例类型") + theme(axis.text.x = element_text(angle = 45, hjust = 1)) # 旋转x轴标签,避免重叠
实用调整技巧
- 如果Variants太多导致x轴挤在一起,直接转成横向条形图更清晰:
ggplot(...) + geom_col(position = "dodge") + coord_flip() - 想自定义Ratio的颜色?用
scale_fill_manual()指定:ggplot(...) + geom_col(position = "dodge") + scale_fill_manual(values = c("A" = "#E63946", "B" = "#457B9D", "C" = "#1D3557", "D" = "#F1FAEE")) - 给条形加数值标签,让数据更直观:
ggplot(summary_data, aes(x = Variants, y = n, fill = Ratio)) + geom_col(position = position_dodge(width = 0.9)) + geom_text(aes(label = n), position = position_dodge(width = 0.9), vjust = -0.5) # 标签放在条形上方
内容的提问来源于stack exchange,提问作者Bambeil
相关产品推荐
相关产品推荐

