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

如何提取Plotly Sankey图中节点的X、Y坐标?

Plotly桑基图节点坐标的存储与提取(R语言示例)

一、桑基图节点坐标的存储位置

Plotly中type = "sankey"的桑基图,其节点的X/Y坐标直接存储在生成的Plotly对象内部,具体路径为:

  • X坐标:plotly_obj$x$data[[1]]$node$x
  • Y坐标:plotly_obj$x$data[[1]]$node$y

其中plotly_obj是你生成的桑基图对象,[[1]]是因为桑基图通常为单数据集图表,node下的x和y对应节点的归一化坐标(范围一般为0到1,X轴从左到右、Y轴从上到下)。如果手动指定过节点坐标,提取的就是自定义值;未指定的话,就是Plotly自动分配的布局坐标。

二、R语言实操:提取节点名称与坐标

下面用完整代码示例演示从生成桑基图到提取坐标的全流程:

1. 先生成桑基图示例

library(plotly)

# 定义节点和链接数据
nodes <- data.frame(name = c("A1", "A2", "B1", "B2", "C1", "C2"))
links <- data.frame(
  source = c(0, 0, 1, 1),  # 节点索引从0开始
  target = c(2, 3, 4, 5),
  value = c(10, 20, 15, 25)
)

# 生成桑基图对象
sankey_plot <- plot_ly(
  type = "sankey",
  node = list(
    label = nodes$name,
    color = c("#636efa", "#ef553b", "#00cc96", "#ab63fa", "#ffa15a", "#19d3f3")
  ),
  link = list(
    source = links$source,
    target = links$target,
    value = links$value
  )
)

2. 提取坐标并生成数据框

运行以下代码,从桑基图对象中提取节点信息并合并为新数据框:

# 提取节点名称
node_names <- sankey_plot$x$data[[1]]$node$label

# 提取X、Y坐标
node_x <- sankey_plot$x$data[[1]]$node$x
node_y <- sankey_plot$x$data[[1]]$node$y

# 合并为数据框
node_coords <- data.frame(
  node_name = node_names,
  x_coord = node_x,
  y_coord = node_y
)

# 查看结果
print(node_coords)

典型输出结果

坐标值由Plotly自动分配,结果类似:

node_name x_coord   y_coord
1        A1     0.0 0.2500000
2        A2     0.0 0.7500000
3        B1     0.5 0.1666667
4        B2     0.5 0.5000000
5        C1     1.0 0.3333333
6        C2     1.0 0.6666667

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:18:29