Использование разных типов линий ребер в 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) 

Граф с отрицательными ребрами в виде пунктирных линий

Другие вопросы по тегам