向 data.tree 对象添加“填充”属性以用于 R

问题描述

我们一直在使用带有 collapsibleTree() 的数据框来制作交互式、美观的分层系统树状图。但我们遇到的问题是,在使用数据框时很难获得我们想要的自定义,而且从 collapsibleTree 文档看来,使用 data.tree 结构提供了更大的灵活性。例如,如果我们想用数据框为特定节点着色,我们需要做这样的事情:

library(dplyr)
library(data.tree)
library(collapsibleTree)

colors <- rep('gray',15)
colors[1] <- 'red' # root
colors[3] <- 'red' # child we want to emphasize
colors[15] <- 'red' # grand child we want to emphasize

original_data_frame %>% 
  collapsibleTree(
    hierarchy = c("level_2","level_3","level_4","level_5","level_6","level_7"
    ),root = "level_1",fill = colors
  )

这并不是一个好的解决方案,尤其是当生成的树有数百个或更多节点或更高级别的层次结构时。

我在 data.tree 中看到,我应该可以添加任意属性,但这似乎不起作用,至少它没有达到我想要的效果

original_as_tree <- original_data_frame %>% 
    mutate(pathString =
           paste(
             level_1,level_2,level_3,level_4,level_5,level_6,level_7,sep = "/"),pathString = str_remove_all(pathString,"/NA")) %>% 
  as.Node()

original_as_tree$color <- "gray"
original_as_tree$Boat$color <- "red"

collapsibleTree(original_as_tree,fill = original_as_tree$color)

这只是将每个节点着色为“灰色”(如果我做了 original_as_tree$Boat$color,则为红色)。理想情况下,我可以通过某种 case_whenifelse 调用以编程方式分配颜色。

这是我的示例数据的 dput:

structure(list(level_1 = c("Sea System","Sea System","Sea System"),level_2 = c("System Engineering","Boat","Boat"),level_3 = c("Core Systems Engineering","Auxiliary Systems","Total Ship Integration/Engineering","Electric Plant","Hull Structure","Hull Structure"),level_4 = c(NA_character_,NA_character_,NA_character_
),level_5 = c(NA_character_,NA_character_),level_6 = c(NA_character_,level_7 = c("GREENLAND ENTERPRISES,INC.","3M PURIFICATION INC.","5TH AXIS,LLC","901 D,"A. M. CASTLE & CO.","A.M. CASTLE & CO."
    )),row.names = c(NA,-6L),class = c("tbl_df","tbl","data.frame"

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...