本期图片

Doi:https://doi.org/10.1016/j.cell.2024.12.016
复现结果

代码主体部分由R1、Grok3、o3-mini-high生成。3 个大模型在显著性检验的添加上都使用了 stat_compare_means(),且都错了。感兴趣的读者可以自行尝试。使用代码时请按需修改,切勿全部套用。
示例数据和代码领取
木舟笔记永久VIP企划
权益:
木舟笔记所有推文示例数据及代码(在VIP群里实时更新)。
data+code 木舟笔记科研交流群。
收费:
199¥/人。可添加微信:mzbj0002
转账(或扫描下方二维码),或直接在文末打赏。
点赞
、在看
本文,分享至朋友圈集赞30个
并保留30分钟
,可优惠20¥
。

绘图
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)
往期内容
