繁体   English   中英

使用RColorBrewer根据顶点属性设置igraph顶点颜色

[英]Set igraph vertex color based on vertex attribute using RColorBrewer

我在iGraph中有一个网络,该网络具有代表各种因素的多个顶点属性。 当我基于特定属性绘制图形时,我想为顶点着色。 类似于在ggplot使用color = variableggplot

plot()的参数vertex.color可用于为网络中的所有顶点设置顶点颜色,或者它可以接受RGB值并为每个顶点设置顶点颜色。

我已经将RColorBrewer视为创建货盘的一种方式,但是我不确定如何将其映射回顶点属性。 我也不想硬编码每个属性值的颜色,因为我有多个属性,每个属性具有不同的级别数。

library(igraph)
library(RColorBrewer)

# create an example network
g <- make_ring(5)

# assign vertex attributes
g <- set.vertex.attribute(g, 'group', 1, 'A')
g <- set.vertex.attribute(g, 'group', 2, 'A')
g <- set.vertex.attribute(g, 'group', 3, 'B')
g <- set.vertex.attribute(g, 'group', 4, 'B')
g <- set.vertex.attribute(g, 'group', 5, 'C')

# create color pallet based on unique values for vertex attribute
pal <- brewer_pal(length(unique(V(g)$group)), "Dark2")

# plot network
plot(g, vertex.color = "gray")

错字? 至少在我的RColorBrewer版本中,它是brewer.pal而不是brewer_pal

我们想使用group属性的值从生成的调色板中选择一种颜色,但是这些值是字符串,而不是数字。 一种解决方法是将字符串转换为因数,然后将其用作数字。 这样会将每个唯一的字符串值转换为唯一的数字值。 我们可以用它来选择颜色。

plot(g, vertex.color = pal[as.numeric(as.factor(vertex_attr(g, "group")))])

按属性选择的颜色

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM