pythonic生物人

复现Nature顶刊图,换数据即可用!

本次使用R复现Nature子刊上的以下B图,

s41467-025-67676-7原图
s41467-025-67676-7原图
❤️复现效果图❤️
❤️复现效果图❤️

ImageImageImage

上图为桑基图(Sankey Diagram),是一种用于可视化不同节点间流动关系的图表,通过宽度不一的流动带直观表示数量大小,展示从一个状态到另一个状态的转移或分布过程。其特点是起始流量与结束流量相等,主支和分支的宽度总和保持平衡,体现能量守恒。流动带的宽度按比例反映分支流量占比,不同节点的宽度则对应特定状态下的流量规模,类似于能量守恒定律。

下面分享ggplot2结合其扩展快速绘制桑基图。

数据准备

# 读取原始数据(三列:layer1 layer2 layer3)

df_raw <- read_tsv(
"r_data/sankey2_countrys.txt",
  col_names = c("layer1", "layer2", "layer3"),
  show_col_types = FALSE
)
head(df_raw, n=10)
Image

R绘制Sankey plot

代码很简单,

# 5. 绘制三层 Sankey 图
p <- ggplot(
  df_alluvial,
  aes(
    x        = layers,        # 横轴:层级
    stratum  = regions,       # 节点类别
    alluvium = alluvium,      # 流向 ID
    y        = value,         # 流量大小
    fill     = regions,       # 按类别填充颜色
    label    = regions        # 节点标签
  )
) +
# 设置层级顺序与间距
  scale_x_discrete(
    limits = c("layer1", "layer2", "layer3"),
    labels = c("Layer 1", "Layer 2", "Layer 3"),
    expand = c(0.1, 0)
  ) +
# 绘制流向
  geom_flow(
    width = 1/4,
    alpha = 0.6
  ) +
# 绘制节点(stratum)
  geom_stratum(
    width = 1/4,
    alpha = 0.6,
    color = "grey90"
  ) +
# 在节点内添加自适应文本标签
  ggfittext::geom_fit_text(
    stat = "stratum",
    width = 1/4,
    min.size = 3
  ) 
Image

本期结束!


获取绘图代码+测试数据+数据处理方法+依赖包安装方法,

👇(备注:299)

图片

-推荐阅读-


复现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张图,换数据即可用!
复现中科院IF 25.9期刊上3张图,换数据即
  • 图片
复现效果图-b图❤️
图片
❤️复现效果图-bcd图❤️
图片
❤️复现效果图-b图❤️
图片
图片

(加入学习,备注:299)

图片