我可以根据表中的列为节点设置颜色吗?

问题描述

您好,我正在尝试根据表中的列(如果可能)为我的节点着色。我正在创建的程序将根据 CVS 文件设置列但不同数量的行。我希望能够在读取文件自动为节点着色。我不太确定如何做到这一点。到目前为止,这是我的代码。如您所见,我为每个节点手动输入了颜色。任何可以帮助我的网站的建议或链接都​​会对我有很大帮助,谢谢。

library(tidyverse)
library(DiagrammeR)
library(dplyr)
library(igraph)


e <- read.csv("edges.csv",stringsAsFactors  = FALSE)

n <- read.csv("nodes.csv",stringsAsFactors = FALSE)

e$to <- as.character(e$to)
 

create_graph()  %>%
  
  add_nodes_from_table(table=n,label_col = task) %>%
  
  add_edges_from_table(table=e,from_col = from,to_col = to,from_to_map = label) %>%

  set_node_attrs(
    
    node_attr = "shape",values = "square")%>%
  
  set_node_attrs(

    node_attr = "fixedsize",values = FALSE) %>%
  
  set_node_attrs(

    node_attr = "fillcolor",values = "#add8e6",nodes = c(1)) %>%

  set_node_attrs(
    
    node_attr = "fillcolor",values = "#07B8B4",nodes = c(2,3,4)) %>%
  
  set_node_attrs(
    
    node_attr = "fillcolor",values = "#A7EEC9",nodes = c(5,6,7,8,9,10)) %>%
  
  set_node_attrs(
    
    node_attr = "fillcolor",values = "#FC6C85",nodes = c(11)) %>%
  
  set_edge_attrs(
    
    edge_attr = color,values = "#7D7D7D") %>%
  
  
  render_graph(layout = "tree")

Example of diagram

Edges data


e <- structure(list(from = c("Parent 1\\nIdaho\\nAge 23\\n130 lbs","Parent 1\\nIdaho\\nAge 23\\n130 lbs","Child 1\\nIowa\\nAge 7\\n85 lbs","Child 3\\nIdaho\\nAge 6\\n70 lbs","Stuffy 3\\nbrown\\nMonkey"),to = c("Child 1\\nIowa\\nAge 7\\n85 lbs","Child 2\\nKansas\\nAge 7\\n80 lbs","Stuffy 1\\nRed\\nBear","Stuffy 2\\nWhite\\nCat","Stuffy 3\\nbrown\\nMonkey","Stuffy 4\\nRainbow\\nUnicorn","Stuffy 5\\nGreen\\nSnake","Stuffy 6\\nPurple\\nElephant","Cat 1\\nBlack&White")),row.names = c(NA,-10L),class = "data.frame")

Nodes data

n <- structure(list(task = c("Parent 1\\nIdaho\\nAge 23\\n130 lbs","Cat 1\\nBlack&White"
)),class = "data.frame",-11L))

Colors data

cols <- structure(list(colors = c("#add8e6","#0078aa","#00a0b0","#00c49e","#8be381","#00baa5","#00a7bb","#005bbe","#663399","#a15497"
)),-10L))

解决方法

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

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

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