跟着 Cell 学做图| 柱状图+误差线+显著性标记

PairedGroupedBars_SEM_StarAnnotations

PairedGroupedBars_SEM_StarAnnotations

本期图片

110efff0471487dbf421749d5e6c325d.png

Doi:https://doi.org/10.1016/j.cell.2024.12.016

复现结果

7a616060a25b06da5458261bc1c615bf.png

代码主体部分由R1、Grok3、o3-mini-high生成。3 个大模型在显著性检验的添加上都使用了 stat_compare_means(),且都错了。感兴趣的读者可以自行尝试。使用代码时请按需修改,切勿全部套用。

示例数据和代码领取

木舟笔记永久VIP企划

权益:

  1. 木舟笔记所有推文示例数据及代码(在VIP群里实时更新)。

    73cacecd6f2c2080913981d10c55c217.png
    data+code
  2. 木舟笔记科研交流群

收费:

199¥/人。可添加微信:mzbj0002 转账(或扫描下方二维码),或直接在文末打赏。

点赞在看 本文,分享至朋友圈集赞30个保留30分钟,可优惠20¥

image-20220529221602758

绘图

library(ggplot2)
library(ggpubr)

set.seed(123)

# 生成模拟数据
categories <- c("Stom", "ABX-Stom", "Duo", "ABX-Duo", "jej", "ABX-jej",
                "ile", "ABX-ile", "Cec", "ABX-Cec", "Col", "ABX-Col")

data_list <- list(
  Stom = rnorm(5, mean = 600, sd = 50),
  `ABX-Stom` = rnorm(5, mean = 400, sd = 100),
  Duo = rnorm(5, mean = 400, sd = 50),
  `ABX-Duo` = rnorm(5, mean = 300, sd = 50),
  jej = rnorm(5, mean = 375, sd = 50),
  `ABX-jej` = rnorm(5, mean = 200, sd = 100),
  ile = rnorm(5, mean = 275, sd = 50),
  `ABX-ile` = rnorm(5, mean = 200, sd = 50),
  Cec = rnorm(5, mean = 600, sd = 50),
  `ABX-Cec` = rnorm(5, mean = 400, sd = 50),
  Col = rnorm(5, mean = 425, sd = 50),
  `ABX-Col` = rnorm(5, mean = 350, sd = 50)
)

data <- data.frame(
  category = factor(rep(categories, each = 5), levels = categories),
  proteins = unlist(data_list)
)

# 计算均值和标准误(仅用于绘图)
summary_data <- do.call(rbind, lapply(split(data$proteins, data$category), 
                                      function(x) data.frame(mean = mean(x), sem = sd(x)/sqrt(length(x)))))
summary_data$category <- rownames(summary_data)
summary_data$category <- factor(rownames(summary_data), levels = categories)

# 颜色配置
color_palette <- c(
"Stom" = "#1f497d", "ABX-Stom" = "#1f497d",
"Duo" = "#8faadc", "ABX-Duo" = "#8faadc",
"jej" = "#2e75b6", "ABX-jej" = "#2e75b6",
"ile" = "#2e75b6", "ABX-ile" = "#2e75b6",
"Cec" = "#d9d9d9", "ABX-Cec" = "#d9d9d9",
"Col" = "#ecf2f6", "ABX-Col" = "#ecf2f6"
)

# 绘制柱状图
# 构建绘图对象(分层处理数据源)
ggplot(data = data) +
# 第一层:柱状图(使用汇总数据)
  geom_col(
    data = summary_data,
    aes(x = category, y = mean, fill = category),
    position = position_dodge(width = 0.95),
    width = 0.6, color = "black", linewidth = 0.5
  ) +
# 第二层:误差线(使用汇总数据)
  geom_errorbar(
    data = summary_data,
    aes(x = category, ymin = mean - sem, ymax = mean + sem),
    width = 0.4, linewidth = 0.5, color = "black"
  ) +
# 可视化参数设置
  scale_fill_manual(values = color_palette) +
  scale_y_continuous(
    expand = expansion(mult = c(0, 0.1)),  # 顶部留出标注空间
    limits = c(0, 700),
    breaks = seq(0, 700, 200)
  ) +
  xlab('')+
  labs(y = "Detected host proteins") +
  theme_classic() +
  theme(
    axis.text.x = element_text(
      angle = 45,
      hjust = 1,
      size = 11,
      color = "black",
      face = "bold"
    ),
    axis.title.y = element_text(size = 12, margin = margin(r = 10)),
    axis.line = element_line(linewidth = 0.3),
    legend.position = 'none')+
# 显著性标记使用原始数据
  geom_signif(
    data = data,
    aes(x = category, y = proteins),
    comparisons = list(
      c("Stom", "ABX-Stom"),
      c("Duo", "ABX-Duo"),
      c("jej", "ABX-jej"),
      c("ile", "ABX-ile"),
      c("Cec", "ABX-Cec"),
      c("Col", "ABX-Col")
    ),
    test = "t.test",
    map_signif_level = T,
    y_position = c(650, 650, 650, 650, 650, 650),  # 精确调整位置
    tip_length = 0.05,
    size = 0.5,
    vjust = 0.3
  )
ggsave('demo.pdf',width = 4,height = 4)

往期内容

  1. 资源汇总 | 2022 木舟笔记原创推文合集(附数据及代码领取方式)

  2. CNS图表复现|生信分析|R绘图 资源分享&讨论群!

  3. R绘图 | 浅谈散点图及其变体的作图逻辑

  4. 这图怎么画| 有点复杂的散点图

  5. 这图怎么画 | 相关分析棒棒糖图

  6. 组学生信| Front Immunol |基于血清蛋白质组早期诊断标志筛选的简单套路

  7. (免费教程+代码领取)|跟着Cell学作图系列合集

  8. Q&A | 如何在论文中画出漂亮的插图?

  9. 跟着 Cell 学作图 | 桑葚图(ggalluvial)

  10. R实战 | Lasso回归模型建立及变量筛选

  11. 跟着 NC 学作图 | 互作网络图进阶(蛋白+富集通路)(Cytoscape)

  12. R实战 | 给聚类加个圈圈(ggunchull)

  13. R实战 | NGS数据时间序列分析(maSigPro)

  14. 跟着 Cell 学作图 | 韦恩图(ggVennDiagram)


木舟笔记矩阵
木舟笔记矩阵
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值