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

标签 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")

最佳答案

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

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

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

Color selected by attribute

关于r - 使用 RColorBrewer 根据顶点属性设置 igraph 顶点颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49076441/

相关文章:

r - R : use `geom_ribbon` for shading under two different `geom_smooth` lines 中的 ggplot2

r - 为什么 tidyr `complete()` 没有在 R 中完成?

r - 如何生成和绘制所有生成树?

python - igraph:绘制同一图的递增增长子图时如何固定节点位置

javascript - 让旧的 dc.js fiddle 再次工作

python - matplotlib.contourf 级别是否取决于颜色图中的颜色数量?

R 基准代码不生成输出

r - 合并两列类型因子

r - 查找 DAG 中节点值的累积和

r - ggplot2 带有渐变颜色填充的水平条形图