在qgraph中使用不同的边线类型

时间:2016-04-22 08:46:00

标签: par r-qgraph

我使用qgraph包绘制相关网络,显示正值和负值。由于日志限制,我需要一个灰度图,所以节点的颜色可以很容易设置,但我边缘有困难。我想为正("solid")和负("dashed")相关设置不同的线型,因此我们不需要格式化节点和边缘。 'qgraph`中的参数lty只允许整个图的一种类型的线,我怎样才能使它工作?

这是一个试探性的解决方案

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 个答案:

答案 0 :(得分:0)

似乎lty需要是合适值的 vector 。那么我们如何知道哪些边应该是虚线以及哪些是实心的?我将演示一种使用mental包中的 bfi 数据完成工作的方法。

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会将颜色减少到可管理的数字:现在我们知道正边缘是&#34;#009900&#34;或者&#34; darkgreen&#34;彩色。所以我们需要做的就是形成一个新的向量:

linetype <- ifelse( (edgecolor == "#009900" | edgecolor =="darkgreen"), 1, 2)

然后我们可以根据这些线型绘制所需的图形:

qgraph(cor(persvars,use = "pa"), layout = "spring", graph = "pcor", lty = linetype) 

Graph with negative edges as dashed lines