使用 RColorBrewer 根据顶点属性设置 igraph 顶点颜色
Set igraph vertex color based on vertex attribute using RColorBrewer
我在 iGraph
中有一个网络,它具有代表各种因素的多个顶点属性。当我根据特定属性绘制图形时,我想为顶点着色。类似于您在 ggplot
中使用 color = variable
的方式。
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
属性的值用于 select 您生成的调色板中的颜色,但这些值是字符串,而不是数字。一种方法是将字符串转换为因子,然后将它们用作数字。这会将每个唯一的字符串值转换为唯一的数值。我们可以用它来 select 颜色。
plot(g, vertex.color = pal[as.numeric(as.factor(vertex_attr(g, "group")))])
我在 iGraph
中有一个网络,它具有代表各种因素的多个顶点属性。当我根据特定属性绘制图形时,我想为顶点着色。类似于您在 ggplot
中使用 color = variable
的方式。
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
属性的值用于 select 您生成的调色板中的颜色,但这些值是字符串,而不是数字。一种方法是将字符串转换为因子,然后将它们用作数字。这会将每个唯一的字符串值转换为唯一的数值。我们可以用它来 select 颜色。
plot(g, vertex.color = pal[as.numeric(as.factor(vertex_attr(g, "group")))])