Прежде всего, как в В предыдущем вопросе вы можете использовать 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)