如何在R中的多个网络中使用相同的调色板范围

我想在三个时间点绘制一个相同的网络。每次,节点的属性(一个连续变量)都在不断发展,我想通过改变节点的颜色来展示这种演变。相反,边缘不会随时间变化。为了能够比较节点属性的演变,我需要调色板的范围在整个网络中都相同,但我暂时无法获得。

这里是重现一个简单示例的代码。

library(statnet)
network <- structure(list(mel = list(list(inl = 2L,outl = 1L,atl = list(
    na = FALSE)),list(inl = 4L,atl = list(na = FALSE)),list(inl = 5L,list(inl = 3L,outl = 2L,atl = list(
        na = FALSE)),outl = 3L,atl = list(na = FALSE))),gal = list(n = 5,mnext = 8L,directed = FALSE,hyper = FALSE,loops = FALSE,multiple = FALSE,bipartite = FALSE),val = list(list(na = FALSE,vertex.names = "A",t1 = 100,t2 = 90,t3 = 85),list(na = FALSE,vertex.names = "B",t1 = 50,t2 = 80,t3 = 83),vertex.names = "C",t1 = 10,t2 = 60,t3 = 62),vertex.names = "D",t1 = 75,t2 = 15,t3 = 20),vertex.names = "E",t1 = 25,t2 = 30,t3 = 35)),iel = list(integer(0),1L,4L,c(2L,5L),c(3L,6L,7L)),oel = list(3:1,6:4,7L,integer(0),integer(0))),class = "network")

我的节点的属性为“ t1”,“ t2”和“ t3”,它们对应于三个时期中正在发展的节点的属性。 网络中有5个节点。

我试图用这种方式来表示三个周期的网络,但是每个矢量周期的调色板范围根据矢量t1,t2和t3改变。

换句话说,我希望color_palette的范围是: 三个图的下界= min(t1,t2,t3)和max bound = max(t1,t2,t3)。 目前,调色板的范围在每个周期都发生变化,即:在周期1,下限= min(t1)和上限= max(t1);在周期2,下限= min(t2)和上限= max(t2),在周期3,下限= min(t3)和上限= max(t3)。

library(RColorBrewer)
cols=brewer.pal(4,"Reds")
my_pal <- colorRampPalette(cols)
t1 <- as.factor(get.vertex.attribute(network,"t1"))
t2 <- as.factor(get.vertex.attribute(network,"t2"))
t3 <- as.factor(get.vertex.attribute(network,"t3"))
order1 <- findInterval(t1,sort(t1))
order2 <- findInterval(t2,sort(t2))
order3 <- findInterval(t3,sort(t3))

coordref <- plot(network)

op <- par(mar=c(0,0))
plot(network,usearrows=FALSE,displaylabels=T,vertex.cex=5,vertex.border="black",vertex.col=my_pal(5)[order1],edge.col = "black",coord=coordref)
par(op)

op <- par(mar=c(0,vertex.col=my_pal(5)[order2],vertex.col=my_pal(5)[order3],coord=coordref)
par(op)
ydp1016 回答:如何在R中的多个网络中使用相同的调色板范围

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3165204.html

大家都在问