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

Plotly可视化:Treemap/环形图同名类别颜色一致性问题求助

固定Plotly树形图与环形图的类别配色

问题背景

使用Plotly创建树形图时,初始数据df1生成的图中Merc显示为蓝色;但修改数据为df2(AMC占比提升)后,Merc的颜色变为橙色,配色无法保持一致。需要实现:

  • 同名类别在树形图中始终使用相同颜色
  • 环形图(Donut Plot)也沿用这套树形图的配色

解决方案:手动创建类别-颜色映射表

核心思路是提取初始树形图自动分配的配色,生成固定的映射关系,后续所有图表都基于该映射指定颜色。

步骤1:提取初始树形图的配色映射

运行df1的树形图代码后,从生成的treemap对象中提取每个类别对应的颜色,创建映射表:

# 从初始树形图中提取配色映射
color_map <- setNames(
  treemap$x$data[[1]]$marker$colors,
  treemap$x$data[[1]]$labels
)

步骤2:在df2的树形图中使用固定配色

修改df2的树形图代码,通过marker = list(colors = ...)指定预定义的配色:

df2$test <- 1

treemap_df2 <- plot_ly(data = df2,
                 type= "treemap",
                 values= ~count,
                 labels= ~manuf,
                 parents=  ~test,
                 domain= list(column=0),
                 name = " ",
                 marker = list(colors = unname(color_map[df2$manuf])), # 应用固定配色
                 textinfo="label+value+percent parent")  %>%
  layout(title="",
         annotations =
           list(x = 0, y = -0.1,
                title = "", 
                text = " ",
                showarrow = F,
                xref='paper',
                yref='paper'))

treemap_df2

步骤3:环形图沿用同一配色

创建环形图时,同样使用color_map指定颜色,确保和树形图配色一致:

# 环形图(Donut Plot)示例
donut_plot <- plot_ly(data = df2,
                      labels = ~manuf,
                      values = ~count,
                      type = 'pie',
                      hole = 0.6, # 开启环形效果
                      marker = list(colors = unname(color_map[df2$manuf])),
                      textinfo = "label+value+percent") %>%
  layout(title = "环形图(与树形图统一配色)",
         showlegend = TRUE)

donut_plot

效果说明

通过固定的color_map映射表,无论后续数据如何调整,只要类别名称不变,对应的颜色就会和初始树形图完全一致,环形图也会同步使用这套配色。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:41:28