【问题标题】:Plot data.tree coloring and labelling by level按级别绘制 data.tree 着色和标签
【发布时间】:2020-10-06 06:50:21
【问题描述】:

我有以下 data.tree 结构。

d <- structure(list(SUBZONE = c("A1", "A2", "A3", "A4", "A8", "B10",  "B11", "B2", "B3", "B4"), 
                    ZONE = c("A", "A", "A", "A", "A", "B", "B", "B", "B", "B"), 
                    ID = c(1L, 2L, 3L, 4L, 5L, 7L, 8L, 9L, 10L, 11L)), 
               .Names = c("SUBZONE", "ZONE", "ID"), 
               row.names = c(NA, 10L), 
               class = "data.frame")

d$pathString <- paste("all", d$ZONE,d$SUBZONE, sep = "/")
alltree <-as.Node(d)
plot(alltree)

根据图和alltree$Get(function(x) c(level = x$level)),这棵树有三个不同的层次:

我想在格式化这个情节时实现两件事:

  1. 按级别着色,
  2. 逐个标签。

即使我试过了,我也不知道如何进入这些关卡。在这种情况下,我有“命名”节点,但我拥有的所有树都不是这种情况,所以我想通过它的级别号来访问它们。

【问题讨论】:

    标签: r plot data.tree


    【解决方案1】:

    您可以使用Traverse获取关卡中所有节点的集合:

    level1 <- Traverse(alltree, filterFun = function(x) x$level == 1)
    level2 <- Traverse(alltree, filterFun = function(x) x$level == 2)
    level3 <- Traverse(alltree, filterFun = function(x) x$level == 3)
    

    这允许您像这样根据需要为节点着色:

    Do(level1, SetNodeStyle, style = "filled", fillcolor = "#fff200", 
       fontcolor = "black", inherit = FALSE)
    Do(level2, SetNodeStyle, style = "filled", fillcolor = "#feadc9", 
       fontcolor = "black", inherit = FALSE)
    Do(level3, SetNodeStyle, style = "filled", fillcolor = "#b5e51a", 
       fontcolor = "black", inherit = FALSE)
    

    这给出了这个结果:

    plot(alltree)
    

    在绘制关卡方面,我无法在包本身中找到任何本地方式来执行此操作,但大概如果您导出为DiagrammeR 格式,这将是可能的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 2011-04-14
      相关资源
      最近更新 更多