微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决向 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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?