Я хотел бы построить одну и ту же сеть в три момента времени. Каждый раз атрибут узлов, который является непрерывной переменной, развивается, и я хотел бы показать эту эволюцию, изменяя цвета узлов. Границы, напротив, не меняются во времени. Чтобы иметь возможность сравнивать эволюцию атрибутов узлов, мне нужно, чтобы диапазон цветовой палитры был одинаковым в разных сетях, чего мне пока не удается получить.
Вот код для воспроизведенияпростой пример.
library(statnet)
network <- structure(list(mel = list(list(inl = 2L, outl = 1L, atl = list(
na = FALSE)), list(inl = 4L, outl = 1L, atl = list(na = FALSE)),
list(inl = 5L, outl = 1L, atl = list(na = FALSE)), list(inl = 3L,
outl = 2L, atl = list(na = FALSE)), list(inl = 4L, outl = 2L,
atl = list(na = FALSE)), list(inl = 5L, outl = 2L, atl = list(
na = FALSE)), list(inl = 5L, 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), list(na = FALSE, vertex.names = "C",
t1 = 10, t2 = 60, t3 = 62), list(na = FALSE, vertex.names = "D",
t1 = 75, t2 = 15, t3 = 20), list(na = FALSE, 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 (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,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,0,0,0))
plot(network, usearrows=FALSE,
vertex.border="black", displaylabels=T, vertex.cex=5, vertex.col=my_pal(5)[order2],
edge.col = "black",
coord=coordref)
par(op)
op <- par(mar=c(0,0,0,0))
plot(network, usearrows=FALSE,
vertex.border="black", displaylabels=T, vertex.cex=5, vertex.col=my_pal(5)[order3],
edge.col = "black",
coord=coordref)
par(op)