【问题标题】:Color nodes differently and remove label in visNetwork不同的颜色节点并删除 visNetwork 中的标签
【发布时间】:2020-07-07 18:34:40
【问题描述】:

尝试在 R 中可视化网络,我有一个边和节点列表。节点列表如下所示 - “id”、“label”和“type”:

我想根据节点的类型为节点着色。到目前为止,我通过嵌入 if 语句进行了尝试,但这似乎不起作用。

visNetwork(nodes, edges) %>% 
  visIgraphLayout(layout = "layout_in_circle") %>% 
  visNodes(label = NULL,(
    if (nodes$type ="gimn") { 
      color= "slategrey"
    } else if (nodes$type ="szakgimn") {
      color="pink"
    } else if  (nodes$type ="ált_isk") {
      color="black"
    } else {
      color ="tomato"
    })) %>% 
  visEdges(arrows = "middle")

如何根据节点类型为节点分配颜色?另外如何从情节中删除标签? (上面的代码似乎也不起作用。)

【问题讨论】:

    标签: r visnetwork


    【解决方案1】:

    我猜你可以尝试嵌套ifelse 来根据类型定义颜色,如下所示

    visNetwork(nodes, edges) %>%
      visIgraphLayout(layout = "layout_in_circle") %>%
      visNodes(
        label = NULL,
        color = ifelse(nodes$type == "gimn",
          "slategrey",
          ifelse(nodes$type == "szakgimn",
            "pink",
            ifelse(nodes$type == "alt_isk",
              "black", "tomato"
            )
          )
        )
      ) %>%
      visEdges(arrows = "middle")
    

    另一种方法是在使用管道之前将color添加到nodes,例如,

    nodes$color <- ifelse(nodes$type == "gimn",
              "slategrey",
              ifelse(nodes$type == "szakgimn",
                "pink",
                ifelse(nodes$type == "alt_isk",
                  "black", "tomato"
                )
              )
            )
    visNetwork(nodes, edges) %>%
          visIgraphLayout(layout = "layout_in_circle") %>%
          visEdges(arrows = "middle")
    

    【讨论】:

    • 嗯,出于同样的原因,节点的颜色仍然是默认颜色,即使在使用 ifelse 时也是如此。也许管道的顺序有问题。无论如何,谢谢!
    • @cvr 我猜你可以尝试使用嵌套的ifelsenodes 中添加color 列,然后不需要在管道中使用visNodes
    猜你喜欢
    • 2020-01-05
    • 2018-04-17
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多