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

ggplot2绘制正负值柱状图缺失Post-Oviposition列及优化求助

问题原因说明

Post-Oviposition正值柱缺失是因为你设置的y轴上限为4000,该分组的上调DEG数量为4210,超出绘图范围被直接裁剪,调整y轴上限即可解决。


完整解决代码

先加载依赖包:

library(ggplot2)
library(ggnewscale)

数据预处理(优化版,无需拆分处理两个表)

# 统一处理数值正负,合并数据也可以,分开绘图逻辑更清晰
up.counts$degs <- abs(up.counts$degs)
dn.counts$degs <- -abs(dn.counts$degs)
# 统一设置分组因子顺序,保证对应关系正确
contrast_levels <- unique(up.counts$contrast.names)
up.counts$contrast.names <- factor(up.counts$contrast.names, levels = contrast_levels)
dn.counts$contrast.names <- factor(dn.counts$contrast.names, levels = contrast_levels)

绘图代码(包含分组、自定义颜色需求)

# 自定义颜色,可根据需求替换色值
up_colors <- c("Early" = "#f8766d", "Late" = "#c73c26", "Both" = "#ff9d2e") # 上调组对应颜色
dn_colors <- c("Early" = "#619cff", "Late" = "#2363d1", "Both" = "#00ba38") # 下调组对应颜色

# 定义y轴刻度
ybreaks <- seq(-5000, 4500, 1000)

cdeg1 <- ggplot() +  
  # 上调分组柱形,position_dodge实现同x分组下按deg.phase并排展示
  geom_bar(data = up.counts, aes(x = contrast.names, y = degs, fill = deg.phase), 
           stat = "identity", width = 0.7, position = position_dodge(width = 0.8)) +
  scale_fill_manual(values = up_colors, name = "上调DEG") +
  # 重置填充色标尺,给下调组单独设置颜色
  new_scale_fill() + 
  # 下调分组柱形
  geom_bar(data = dn.counts, aes(x = contrast.names, y = degs, fill = deg.phase), 
           stat = "identity", width = 0.7, position = position_dodge(width = 0.8)) +
  scale_fill_manual(values = dn_colors, name = "下调DEG") +
  # 调整y轴上限到4500,避免最大值被截断
  scale_y_continuous(limits = c(-5000,4500), breaks = ybreaks, labels = abs(ybreaks)) +
  # 基础标注与主题设置
  labs(x = "分组名称", y = "差异基因数量") +
  theme_bw() +
  theme(
    legend.box = "horizontal", 
    legend.margin = margin(0,0,0,-0.6, "cm"), 
    legend.box.margin =  margin(0,1,0,1, "cm"), 
    legend.title = element_text(size = 14), 
    legend.text = element_text(size = 12),
    axis.text.x = element_text(angle = 45, hjust = 1) # 倾斜x轴标签避免重叠
  )

cdeg1

实现效果说明

  • 调整y轴上限后Post-Oviposition的上调柱可完整显示
  • 通过position_dodge参数实现了同一个对比分组下,不同deg.phase的柱形并排的分组效果
  • 上下调分组的deg.phase类别分别支持自定义颜色,直接修改up_colors和dn_colors的色值即可适配需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:15:06