使用RColorBrewer

时间:2018-03-02 19:56:38

标签: r igraph colorbrewer

我在iGraph中有一个网络,它有多个表示各种因素的顶点属性。我想根据特定属性绘制图形时为顶点着色。与您在color = variable中使用ggplot的方式类似。

vertex.color中的参数plot()可用于设置网络中所有顶点的顶点颜色,也可以接受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")

1 个答案:

答案 0 :(得分:1)

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

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

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

Color selected by attribute