R语言Plotly旭日图颜色显示异常问题求助
修复Plotly旭日图自定义颜色不显示的问题
你的问题出在错误使用了layout(colorway)来设置节点颜色,colorway是Plotly用于自动分配离散颜色的全局色环,无法直接映射到你数据中每行的自定义颜色。旭日图的节点颜色需要通过trace的marker.color参数直接绑定到你的colors列,同时根节点(中心节点)的颜色也会通过这个参数正确渲染。
修改后的代码
library(plotly) test <- data.frame( stringsAsFactors = FALSE, ids = c("pH", "SpecificConductance","TotalNitrogen","TotalPhosphorous","OE_Macroinvertebrate", "PctBankOverheadCover","PctFinesLessThan2mm","PctBankCovered","PctBankStable", "FloodplainConnectivity","WaterQuality","Biodiversity","WatershedFunction", "SiteScore"), labels = c("pH<br>A", "SpecificConductance <br> A", "TotalNitrogen <br> A","TotalPhosphorous <br> F", "OE_Macroinvertebrate <br> B", "PctBankOverheadCover <br> B", "PctFinesLessThan2mm <br> A","PctBankCoveredMIM <br> B", "PctBankStable <br> A","FloodplainConnectivity <br> F", "WaterQuality <br> B","Biodiversity <br> B", "WatershedFunction <br> B", "SiteScore <br> B"), parents = c("WaterQuality", "WaterQuality","WaterQuality", "WaterQuality","Biodiversity","Biodiversity","WatershedFunction","WatershedFunction", "WatershedFunction","WatershedFunction","SiteScore","SiteScore", "SiteScore", NA ), colors = c("#481567FF","#481567FF","#481567FF","#FDE725FF","#238A8DFF","#238A8DFF", "#481567FF","#238A8DFF","#481567FF","#FDE725FF","#238A8DFF","#238A8DFF","#238A8DFF", "#238A8DFF" ) ) # 关键修改:在trace中设置marker.color绑定colors列 test_plot <- plot_ly(test, ids = ~ids, labels = ~labels, parents = ~parents, type = 'sunburst', marker = list(color = ~colors) # 新增这一行 ) test_plot
核心说明
marker = list(color = ~colors):直接将数据框中每行的colors值绑定到对应旭日图节点的颜色,这是Plotly旭日图自定义节点颜色的正确方式。- 根节点(SiteScore)的
parents为NA,它的颜色由自身行的colors值决定,修改后会正常显示你设置的#238A8DFF。 - 移除了
layout(colorway = ~colors),这个参数的作用是当未指定marker.color时,自动循环使用颜色列表分配给节点,无法实现你需要的精准颜色映射。
内容的提问来源于stack exchange,提问作者Jmil
相关产品推荐
相关产品推荐

