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

如何在R中绘制多数据集组合直方图并实现对比可视化

解决方案

数据预处理

首先修正数据类型(原count是字符型,需转为数值型才能正确绘图排序),并给两个数据集添加分组标识,方便ggplot区分:

# 创建并处理数据集1
data1 <- data.frame(
  count = as.numeric(c('10', '15', '16','16','29')),
  drug = c('ibuprofen','aleve','tylenol','claritin', 'ozempic'),
  group = "数据集1"
)

# 创建并处理数据集2
data2 <- data.frame(
  count = as.numeric(c('150', '1000', '15','1','234','452','692')),
  drug = c('ibuprofen','aleve','tylenol','xanax','gilenya','humira','tums'),
  group = "数据集2"
)

# 合并两个数据集
combined_data <- rbind(data1, data2)

绘制并排对比条形图

使用geom_col(适合已知数值的分类条形图,而非统计频数的直方图),配合position_dodge实现并排效果,添加数值标签并设置指定颜色:

library(ggplot2)

ggplot(combined_data, aes(x = reorder(drug, -count), y = count, fill = group)) +
  # 绘制并排条形,控制间距避免重叠
  geom_col(position = position_dodge(width = 0.8), width = 0.7) +
  # 在条形上方添加count数值标签
  geom_text(aes(label = count), 
            position = position_dodge(width = 0.8),
            vjust = -0.5, size = 3.5) +
  # 手动设置颜色:数据集1为黑色,数据集2为灰色
  scale_fill_manual(values = c("数据集1" = "black", "数据集2" = "gray50")) +
  # 设置坐标轴和标题
  labs(x = "药物", y = "Count数值", title = "两个数据集药物Count对比") +
  # 优化主题样式,x轴标签倾斜避免重叠
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),
    axis.text.x = element_text(angle = 45, hjust = 1)
  )

关键细节说明

  • 转count为数值型:原字符型数据无法正确排序和计算位置,必须转换
  • reorder(drug, -count):让药物按count降序排列,对比更直观
  • position_dodge参数:控制并排条形的间距,确保两个数据集的条形不重叠
  • geom_text的vjust=-0.5:将数值标签放在条形顶部,避免遮挡条形内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 03:47:52