R - 为同一网络图上的节点分配多种颜色

时间:2017-11-16 11:44:11

标签: r

我认为这是非常基本的,但我们似乎无法找到这个问题的答案。我们正在构建网络分析图,并希望根据属性为每个节点着色。我们可以做两种颜色,但需要做的不止于此。我们没有使用iGraph,虽然我们发现的大多数搜索都给出了这个例子。以下是我们针对不同组和颜色的代码:

#### Nodes Attributes ####################################################

nodeColors<-ifelse(nodeInfo$Section=="1","hotpink","dodgerblue")
#nodeColors<-(nodeInfo$Section)
## We can easily give two colors but we need four colors.
##########################################################################
##########################################################################
#### Visualisation    ####################################################

gplot(relations,gmode="graph",displaylabels=TRUE,vertex.col=nodeColors, mode = 
"fruchtermanreingold")

我们想要做的是这样的事情:

我们根据方向组分配了4个不同的组:     nodeColors&lt; -nodeInfo $ Orientation ==&#34; 1 2 3 4&#34;,&#34; red&#34;,&#34; blue&#34;,&#34; yellow&#34;,&#34 ;绿色&#34)

思考?我们做错了什么?

1 个答案:

答案 0 :(得分:0)

  

我们做错了什么?

没有人可以说,因为你没有展示你实际做过的可复制(=复制 - 粘贴 - 运行&#39;能力)的例子。

但是,我想dplyr&#39; case_when会让您的生活更轻松:

(x <- c(1:4, 1))
# [1] 1 2 3 4 1
dplyr::case_when(
  x==1~"red",
  x==2~"orange",
  x==3~"blue",
  TRUE~"lightgray"
)
# [1] "red"       "orange"    "blue"      "lightgray" "red"  

您可能需要事先install.packages("dplyr")。您的问题中xnodeInfo$Orientation。您可以使用case_whennodeColors的结果分配给变量<-。有关该功能的更多信息,请参阅?dplyr::case_when