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

R语言highcharter桑基图定制:节点顺序、标签与颜色修改

解决Highcharter桑基图的三个定制需求

以下是针对你提出的三个需求的批量解决方案,基于R语言highcharter包实现,适配大数据集场景:


先模拟基础数据(匹配你的3列桑基图结构)

假设你的原始数据结构如下,我们基于此做修改:

library(highcharter)

# 模拟节点数据(含列标识数字、列分组)
nodes <- data.frame(
  id = 0:5,
  name = c("1-High", "1-Low", "2-High", "2-Low", "3-Low", "3-High"),
  column = c(0,0,1,1,2,2) # 列分组,0=第一年,1=第二年,2=第三年
)

# 模拟流转链路数据
links <- data.frame(
  from = c(0,0,1,1),
  to = c(2,3,4,5),
  value = c(10,5,8,7)
)

1. 移除节点标签前的数字

通过正则表达式批量替换节点名称,去掉开头的数字和分隔符:

# 匹配开头的数字+分隔符(比如"1-"),替换为空
nodes$name <- gsub("^\\d+-", "", nodes$name)

处理后节点名称会变成High/Low,不再带列标识数字。


2. 调整最后一列的High与Low顺序

桑基图列内的节点顺序由nodes的行顺序决定,批量定位最后一列节点并重新排序:

# 获取最后一列的分组编号
last_col <- max(nodes$column)
# 筛选最后一列的节点,按指定顺序(High在前、Low在后)重新排序
last_col_nodes <- nodes[nodes$column == last_col, ]
last_col_nodes <- last_col_nodes[order(match(last_col_nodes$name, c("High", "Low"))), ]
# 将排序后的节点替换回原数据框
nodes[nodes$column == last_col, ] <- last_col_nodes

3. 批量设置High/Low节点统一颜色

通过颜色映射表批量赋值,无需逐个配置:

# 定义颜色映射规则
color_map <- c(High = "#2ecc71", Low = "#e74c3c")
# 批量给节点分配颜色
nodes$color <- color_map[nodes$name]

所有High节点会统一使用绿色,Low节点统一使用红色,可根据需求修改颜色值。


最终生成定制化桑基图

整合所有修改后的代码,生成最终图表:

highchart() %>%
  hc_add_series(
    type = "sankey",
    data = links,
    nodes = nodes,
    name = "测量值流转"
  ) %>%
  hc_title(text = "三年高低测量值流转桑基图")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 14:47:13