首页 > 解决方案 > 不同的颜色节点并删除 visNetwork 中的标签

问题描述

试图在 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")

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

标签: rvisnetwork

解决方案


我想您可以尝试使用嵌套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")

推荐阅读