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

R语言ggplot2同列双值条形图如何统一设置柱色为dodgerblue4

分组条形图调整方案

原代码现存问题

  • 采用宽格式数据结构,缺少分组维度,即便设置了position = "dodge"也只能生成单根柱,无法实现同x分类下两根并排柱的效果
  • 将连续型变量paper_ui直接映射给fill属性,会触发ggplot默认的蓝色连续渐变,导致同一系列的柱颜色深浅不一,无法统一指定色值

具体修改逻辑

  • 先将宽数据重塑为长格式,把两个统计指标(总论文数、UI方法论文数)整理为分类维度下的统一数值列,为并排柱提供分组依据
  • 调整aes映射逻辑,将y轴绑定为统一的数值列,fill属性绑定为指标分类,替代原先的连续变量映射
  • 手动指定填充色值,将所有蓝色柱统一设置为dodgerblue4,消除渐变效果
  • 完全保留原代码的主题、坐标轴设置,维持一致的视觉风格

完整可运行代码

library(ggplot2)
library(tidyr)

# 原始数据
n_papers <- c(6,4,5,1,6,2,1)
paper_ui <- c(3,2,4,0,1,1,0)
methods <- c("AR","ARMA",'ARIMA',"SARIMA","Loess \n decomposition","Classical \n decomposition","Exponential \n smoothing")
df <- data.frame(n_papers,paper_ui,methods)

# 宽格式转长格式,生成分组维度
df_long <- df %>% 
  pivot_longer(
    cols = c(n_papers, paper_ui),
    names_to = "metric",
    values_to = "value"
  )

ggplot(df_long) +
  aes(x = methods, y = value, fill = metric) +
  geom_bar(
    stat = "identity",
    position = position_dodge(width = 0.8),
    show.legend = FALSE
  ) +
  # 统一蓝色柱为dodgerblue4,若需提升辨识度可将paper_ui对应色值调整为浅灰/浅蓝
  scale_fill_manual(values = c("n_papers" = "dodgerblue4", "paper_ui" = "dodgerblue4")) +
  labs(x = NULL, y = "Number of papers") +
  theme_bw() +
  theme(
    panel.border = element_blank(),
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    axis.line = element_line(colour = "black")
  )

补充说明:如果觉得两根同色柱辨识度不足,可将paper_ui对应的色值改为非深蓝色(比如浅灰色"#cccccc"),既不影响蓝色柱统一为dodgerblue4的要求,也能提升两组柱的区分度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 20:24:01