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

在R中绘制带自定义X轴标签的分组柱状图

实现分组柱状图的两种方法

首先先整理你的数据:当前df是矩阵格式,先转成数据框并把行名提取为单独列,方便后续绘图:

names <- c("a","b","c","d")
val1 <- c(1,2,3,4)
val2 <- c(2,3,4,5)
df <- cbind(val1,val2)
rownames(df) <- names

# 转成数据框并提取行名为列
df <- as.data.frame(df)
df$group <- rownames(df)

方法一:用Base R绘图

直接用barplot函数,设置beside=TRUE实现并列柱子,手动调整x轴标签:

# 提取需要绘图的数值列
plot_data <- df[, c("val1", "val2")]
# 设置x轴位置的偏移,让标签居中
x_pos <- barplot(t(as.matrix(plot_data)), beside = TRUE, 
                 col = c("#619CFF", "#F8766D"), # 设置柱子颜色
                 ylab = "数值", # y轴标题
                 main = "分组柱状图") # 图标题
# 添加x轴标签,居中对齐
axis(1, at = colMeans(x_pos), labels = df$group, tick = FALSE)
# 添加图例
legend("topright", legend = c("val1", "val2"), fill = c("#619CFF", "#F8766D"))

方法二:用ggplot2绘图(更推荐,语法更直观)

ggplot2需要把数据转为长格式(适合分组绘图),先安装并加载tidyverse包(包含ggplot2和数据处理工具):

# 安装包(首次使用需要安装)
install.packages("tidyverse")
# 加载包
library(tidyverse)

# 把数据转为长格式
df_long <- df %>% 
  pivot_longer(cols = c(val1, val2), names_to = "指标", values_to = "数值")

# 绘制分组柱状图
ggplot(df_long, aes(x = group, y = 数值, fill = 指标)) +
  geom_col(position = position_dodge()) + # position_dodge实现并列柱子
  labs(x = "分组", y = "数值", title = "分组柱状图") +
  scale_fill_manual(values = c("#619CFF", "#F8766D")) + # 设置柱子颜色
  theme_minimal() # 可选:设置简洁主题

两种方法都能实现你要的并列分组柱状图,ggplot2的方法更灵活,后续调整样式更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:51:13