我想将不同的数据集绘制为igraph对象。它们可以如下:
library(igraph)
m<-matrix(data = c("a1_ghj", "a1_phj",
"b2_ghj", "c1_pht",
"c1_ght", "a1_ghi",
"g5_pht", "d2_phj",
"r5_phj", "u6_pht"), ncol = 2)
))
g<-graph_from_edgelist(m)
g
节点的颜色应该用不同的比例来指定,例如它们如下:
aa qwr asd rty fgh vbn iop ert
ghj 1.8 -0.5 0.2 0.62 0.74 0.3 1.6
ght 2.5 -1 4.1 0.29 0.91 0.9 2
pht -3.5 3 -3.1 -0.9 0.62 -0.6 -9.2
phj -3.5 3 -1.8 -0.74 0.62 -0.7 -8.2
ghi 2.8 -2.5 4.4 1.19 0.88 0.5 3.7
在节点名称中,在_
之后,显示节点所属组的名称。在比例表中,列显示比例的类型,行显示组的名称。
为了绘制这些图,我需要一个函数来标准化-1和1之间的这些比例,然后为节点指定关于表中所选比例类型的值的颜色。有人在这个问题上帮助我吗?
答案 0 :(得分:0)
首先,如同The earlier question
您可以在顶点名称上使用sub
来获取后缀。
Suffixes = factor(sub(".*_", "", names(V(g))))
所以问题就变成了如何使用不同的比例来选择颜色
对于节点。你要求从-1缩放到1,但实际上我已经缩放了
0到1,因为这是所生成函数所期望的参数类型
按colorRamp
。
您的缩放数据
RawScales = read.table(text="aa qwr asd rty fgh vbn iop ert
ghj 1.8 -0.5 0.2 0.62 0.74 0.3 1.6
ght 2.5 -1 4.1 0.29 0.91 0.9 2
pht -3.5 3 -3.1 -0.9 0.62 -0.6 -9.2
phj -3.5 3 -1.8 -0.74 0.62 -0.7 -8.2
ghi 2.8 -2.5 4.4 1.19 0.88 0.5 3.7",
header=TRUE)
我将同时使用qwr
和rty
比例。
在0和1之间缩放。
qwr_Scaled = (RawScales$qwr - min(RawScales$qwr)) /
(max(RawScales$qwr) - min(RawScales$qwr))
rty_Scaled = (RawScales$rty - min(RawScales$rty)) /
(max(RawScales$rty) - min(RawScales$rty))
设置一个功能来创建色阶。注意:橙色是最小值,红色是最大值。
Color = colorRamp(c("orange", "yellow", "white", "pink", "red"))
使用此功能为节点创建颜色矢量。
ColVals_qwr = rgb(Color(qwr_Scaled), maxColorValue=255)
names(ColVals_qwr) = RawScales$aa
ColVals_rty = rgb(Color(rty_Scaled), maxColorValue=255)
names(ColVals_rty) = RawScales$aa
现在使用色标绘图。我添加了一个明确的节点布局,以便两个图可以比较。
par(mfrow=c(1,2), mar=c(5, 1,3,1))
LO = layout_with_fr(g)
plot(g, vertex.color=ColVals_qwr[Suffixes], frame=TRUE)
plot(g, vertex.color=ColVals_rty[Suffixes], frame=TRUE)