如何为R的collapsibleTree包节点按Manager/Operator层级指定颜色?
解决collapsibleTree节点按Title层级设置颜色的问题
你的问题出在直接将Title列转为因子后替换levels——Title包含多个不同层级(比如President、VP Operations等),直接用levels(org$Color) <- c("#3452FF", "#FFC900")只会把前两个层级替换成指定颜色,无法精准匹配Manager和Operator。
正确的做法是通过条件判断给Color列赋值,只针对Manager和Operator设置目标颜色,其他层级可以设置默认颜色(比如#CCCCCC灰色):
org <- data.frame( Manager = c( NA, "Ana", "Ana", "Bill", "Bill", "Bill", "Claudette", "Claudette", "Danny", "Fred", "Fred", "Grace", "Larry", "Larry", "Nicholas", "Nicholas" ), Employee = c( "Ana", "Bill", "Larry", "Claudette", "Danny", "Erika", "Fred", "Grace", "Henri", "Ida", "Joaquin", "Kate", "Mindy", "Nicholas", "Odette", "Peter" ), Title = c( "President", "VP Operations", "VP Finance", "Director", "Director", "Scientist", "Manager", "Manager", "Manager", "Operator", "Operator", "Manager", "Manager", "Manager", "Operator", "Operator" ) ) # 按Title条件设置颜色 org$Color <- ifelse(org$Title == "Manager", "#3452FF", ifelse(org$Title == "Operator", "#FFC900", "#CCCCCC")) org$tooltip <- paste0( org$Employee, "<br>Title: ", org$Title, "<br><img src='https://source.unsplash.com/collection/385548/150x100'>" ) collapsibleTreeNetwork( org, attribute = "Title", fill = "Color", nodeSize = "leafCount", tooltipHtml = "tooltip" )
关键说明:
- 用嵌套
ifelse精准匹配Manager和Operator,分别设置#3452FF(蓝色)和#FFC900(黄色); - 第三个分支
#CCCCCC是其他层级的默认颜色,你可以根据需求改成其他值; - 不需要将Color转为因子,直接用字符型颜色值即可被
collapsibleTreeNetwork识别。
内容的提问来源于stack exchange,提问作者Wilcar
相关产品推荐
相关产品推荐

