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
相关产品推荐
相关产品推荐

