根据节点中心性对顶点进行着色。

4
我正在尝试更改igraph生成的图中顶点的颜色。更具体地说,我有一个由邻接矩阵创建的95个节点的图表,并希望根据它们的度/介数/特征向量中心性/紧密度将它们着色,但我猜想一旦我知道如何使用其中之一,我就能够用其他方法做到这一点。
因此,我已经编写了图形生成的基础代码:
dataset <- read.csv("~/Google Drive/Cours M2/Network Economics/Data/Collabs_2013.csv", sep=";") matrix<-as.matrix(dataset) adj<-graph.adjacency(matrix) plot(adj) btw<-betweenness(adj,directed = FALSE)
现在我有了一个95个介数值的向量,并且想绘制一个渐变颜色的图表,该图表遵循介数值(例如,从最低值的红色到最高值的绿色)。 我猜想我必须操作顶点属性,但我不知道如何将向量输入为颜色属性。

2
将值传递给 vertex.color,例如 plot(adj, vertex.color=rainbow(betweenness(g), start=0, end=2/6))。有关更多绘图选项,请参阅 ?igraph.plotting - user20650
请注意,如果您有一个类似于1、10、9001的中间序列,这将使它们分配3种颜色,彼此等距离。 - OganM
谢谢,运行得非常完美! - Thibault Thomas
2个回答

7

看起来你已经完成了大部分工作。你只需要知道colorRamppalette并设置网络的vertex.color。假设你需要线性改变颜色,

只需执行以下操作:

fine = 500 # this will adjust the resolving power.
pal = colorRampPalette(c('red','green'))

#this gives you the colors you want for every point
graphCol = pal(fine)[as.numeric(cut(btw,breaks = fine))]

# now you just need to plot it with those colors
plot(adj, vertex.color=graphCol)

感谢这篇文章,在回答之前我使用了一种效率更低的方法来分配颜色。


3
只是一则说明:
定义...可能会有问题。
palette = colorRampPalette(c('blue','green'))

作为“调色板”功能,它也被igraph使用,因此igraph后来产生错误。
请参见问题R中igraph网络中顶点的颜色调色板

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接