pythonic生物人

审稿人:p value就该这么用!

本次使用R语言复现Nature Communications上的1张图!

s41467-022-31239-x,figures4 a原图
s41467-022-31239-x,figures4 a原图
❤️复现效果图-a图❤️
❤️复现效果图-a图❤️

✅读入测试数据!

Image

✅关键代码,

ggplot(summary_df, aes(x = Condition, y = mean, fill = Group)) +
# 柱状图
  geom_bar(
    stat = "identity",
    position = position_dodge(0.8),
    width = 0.7,
    color = "black"
  ) +
#  误差线 
  geom_errorbar(
    aes(ymin = mean - sem, ymax = mean + sem),
    width = 0.2,
    position = position_dodge(0.8)
  ) +
# 抖动散点图 
  geom_jitter(
    data = df_long,
    aes(x = Condition, y = value, color = Group),
    position = position_jitterdodge(
      jitter.width = 0.15,
      dodge.width = 0.8
    ),
    color = "black",
    shape = 21,
    stroke = 0.35,
    size = 2,
    alpha = 1,
    show.legend = FALSE
  )
Image

该图主要展示以下信息:

  • 每个bar与参考虚线之间的统计差异p value
  • 每两组数据,例如,Mdm2与Mdm2+p53 ,Ang与Ang+p53之间,IR、REP、OI之间的统计差异p value
  • 每个组数据,例如,Mdm2、Mdm2+p53中IR、REP、OI的分布bar图
  • 每个组数据,例如,Mdm2、Mdm2+p53中IR、REP、OI的分布抖动散点图

✅值得学习的R可视化知识点:

  • 🔸bucket线添加
# 绘制bucket横线
  geom_segment(
    data = pair_pvals,
    aes(x = xmin, xend = xmax, y = y + 26, yend = y + 26),
    inherit.aes = FALSE,
    linewidth = 0.6
  )
Image
  • 🔸p value添加
# 绘制bucket上的p值标签
  geom_text(
    data = pair_pvals,
    aes(x = (xmin + xmax)/2, y = y + 30, label = paste0("P=", p)),
    size = 3
  )
Image
# 添加垂直p值标注
p1 <- p + geom_text(
  data = pval_df,
  aes(x = Condition, y = y, label = label, group = Group),
  position = position_dodge(0.8),
  angle = 90,
  size = 3
)
Image
  • 🔸抖动散点图添加
# 散点图
  geom_jitter(
    data = df_long,
    aes(x = Condition, y = value, color = Group),
    position = position_jitterdodge(
      jitter.width = 0.15,
      dodge.width = 0.8
    ),
    color = "black",
    shape = 21,
    stroke = 0.35,
    size = 2,
    alpha = 1,
    show.legend = FALSE
  )
Image
  • 🔸辅助线添加
# 辅助线
  geom_hline(
    yintercept = 100,
    linetype = "dashed",
    color = "grey50"
  )
Image

正文结束!


(学习了,备注:299)

图片

一些有用的学习资源:


2026可视化工具TOP3
《保姆级R可视化教程》来了!
Python matplotlib保姆级教程
嫌Matplotlib繁琐?试试Seaborn!

复现Nature子刊上3张图,换数据即可用!
复现Nature“水”子刊上配图,换数据即可用!
喜提“Acceptance”,多亏这两张图,能顶60张图的工作量!
复现Nature正刊上3张图,换数据即可用!
复现IF50.0期刊上6张图,换数据即可用!
复现中科院IF 25.9期刊上3张图,换数据即可用!
复现Nature子刊中的2张图,换个数据即可用!
复现IF 48.5的期刊图,这个图帮你省下50%版面费!
喜提“Major Revision”,太多图,被质疑在堆工作量......
审稿人:凭这个3D Heatmap,必须给minor revision
复现Nature子刊上3张图,换数据即可用!
复现Nature“水”子刊上配图,换数据即可用!
喜提“Acceptance”,多亏这两张图,能顶60张图的工作量!
复现Nature正刊上3张图,换数据即可用!
复现IF50.0期刊上6张图,换数据即可用!