【问题标题】:Is it possible to change the length/position of arrows in semPaths?是否可以更改 semPaths 中箭头的长度/位置?
【发布时间】:2021-06-11 17:12:24
【问题描述】:

我正在尝试使用 semPlot::semPaths 绘制我在 lavaan 中运行的双因子模型的图。 semPlot 和 qgraph 的文档真的很棒,所以我已经能够弄清楚我想要的大部分规范,但有一件事我不确定是否可以修复。正如您在下图中看到的那样,当潜在因素(例如,“ext”)连接到广泛的清单变量时,很难跟踪哪些箭头/标签与哪些清单变量相关联。 (例如,很难判断 adhd3 的 ext 加载是 0.23。)看起来箭头试图连接到清单变量标签的中心,而不是最近的一侧。有什么办法可以改变它,让它更容易阅读吗?非常感谢!

这是我使用的代码(抱歉,它很笨拙——1)我是新手,2)潜在变量自动出现在奇怪的地方,所以我手动定义了它们的位置):

full_bif_mod <- "ext =~ cd1 + cd2 + cd3 + cd4 + cd5 + cd6 + cd7 + cd8 + cd9 + cd10 + cd11 + cd12 + cd13 + cd14 + cd15 + cd16 + cd17 + aud1 + aud2 + aud3 + aud4 + aud5 + aud6 + aud7 + aud8 + aud9 + aud10 + adhd1 + adhd2 + adhd3
                cd =~ cd1 + cd2 + cd3 + cd4 + cd5 + cd6 + cd7 + cd8 + cd9 + cd10 + cd11 + cd12 + cd13 + cd14 + cd15 + cd16 + cd17
                aud =~ aud1 + aud2 + aud3 + aud4 + aud5 + aud6 + aud7 + aud8 + aud9 + aud10
                adhd =~ adhd1 + adhd2 + adhd3
                ext ~~ 0*adhd
                ext ~~ 0*cd
                ext ~~ 0*aud
                adhd ~~ 0*cd
                adhd ~~ 0*aud
                cd ~~ 0*aud
                  "
summary((full_bifactor <- cfa(full_bif_mod, std.lv=TRUE, data=dat)),fit.measures=TRUE, standardized = T)

 
x=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30, 15, 9, 22, 29)
y=c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,-1,-1)
ly=matrix(c(y,x), ncol=2)
semPaths(full_bifactor, layout=ly, whatLabels="std", style="lisrel", nCharNodes=5, exoCov=FALSE, residuals=FALSE, label.scale=TRUE, sizeMan2=1.5, sizeMan=6,  asize=1, edge.color="black", edge.label.color="black", edge.label.position=.8, edge.label.margin=-.1, width=17, height=20, filetype="png",filename="cfa"
        )

【问题讨论】:

    标签: r semplot


    【解决方案1】:

    这可以使用 qgraph 中的边缘连接点来完成!见下文:

    # Save plot to object:
    Plot <- semPaths(full_bifactor, layout=ly, 
             whatLabels="std", style="lisrel", nCharNodes=5, 
             exoCov=FALSE, residuals=FALSE, label.scale=TRUE, 
             sizeMan2=1.5, sizeMan=6,  asize=1, edge.color="black", 
             edge.label.color="black", edge.label.position=.8, edge.label.margin=-.1,
             width=17, height=20, filetype="png",filename="cfa"
    )
    
    # Add edge connect point to end point of edges (2nd column) for bifactor:
    Plot$graphAttributes$Edges$edgeConnectPoints[1:30,2] <- 0.5 * pi
    
    # Add edge connect point to end point of edges (2nd column) for other factors:
    Plot$graphAttributes$Edges$edgeConnectPoints[31:60,2] <- 1.5 * pi
    
    
    # Plot again:
    library("qgraph")
    plot(Plot)
    

    使用模拟数据:

    【讨论】:

    • 非常感谢您——完美运行!我真的很感激!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 2020-04-11
    • 2011-05-04
    • 1970-01-01
    相关资源
    最近更新 更多