Использование разных типов линий ребер в qgraph
Я использую qgraph
пакет для построения сети корреляций, которые показывают как положительные, так и отрицательные значения. Мне нужен график серой шкалы из-за ограничений журнала, поэтому цвет узлов можно легко установить, но у меня возникают трудности с краями. Я хотел бы установить другой тип линии для положительного ("solid"
) и отрицательный ("dashed"
) корреляции, поэтому нам не нужен серый код для узлов, а также для ребер. Аргумент lty
в "qgraph" только позволяет один тип линии для всего графика, как я могу заставить его работать?
Вот предварительное решение
qgraph(polys$rho, groups = structure_hscl,
color= c("white","gray","gray25"),
borders=TRUE, trans=FALSE, details=TRUE,
bonf=TRUE, alpha=.05,
normalize =TRUE, vsize=3,
threshold= .2, labels=labels_hscl,
layout="spring", graph="pcor",
lty = c("solid","dashed") # this obviously doesn't work )
Большое спасибо заранее!
1 ответ
Кажется, что lty должен быть вектором подходящих значений. Итак, как мы узнаем, какие края должны быть пунктирными, а какие сплошными? Я продемонстрирую один из способов выполнить работу, используя данные bfi из пакета psych.
library(psych)
library(qgraph)
data(bfi)
persvars <- bfi[,1:25]
Затем давайте создадим временный график и определим, какие линии рисовать штриховыми линиями на основе цветов:
hackgraph <- qgraph(cor(persvars,use = "pa"), fade = FALSE, layout = "spring", graph = "pcor")
edgecolor <- hackgraph$graphAttributes$Edges$color
unique(hackgraph$graphAttributes$Edges$color)
настройка fade = FALSE
выше уменьшил количество цветов до управляемого числа: теперь мы знаем, что положительные края имеют цвет "#009900" или "темно-зеленый". Поэтому все, что нам нужно сделать, это сформировать новый вектор как:
linetype <- ifelse( (edgecolor == "#009900" | edgecolor =="darkgreen"), 1, 2)
Затем мы можем нарисовать желаемый график на основе этих типов линий:
qgraph(cor(persvars,use = "pa"), layout = "spring", graph = "pcor", lty = linetype)