如何复用estimateNetwork生成的网络布局以对齐节点位置?
复用qgraph网络布局以对齐节点位置
你遇到的问题是用estimateNetwork生成的两个网络绘图时节点位置不一致,导致视觉对比困难。无需切换到igraph,直接从第一个绘图结果中提取布局参数复用即可,完全兼容你现有的代码流程:
具体步骤
- 绘制第一个网络后,从返回的绘图对象中提取节点布局坐标矩阵
- 将该矩阵作为
layout参数传入第二个网络的绘图函数
修改后的代码
# Network 1 net_f <- estimateNetwork(f, default="EBICglasso", tuning=0.5, corMethod = "npn", missing="listwise", sampleSize="maximum") # Network 2 net_m <- estimateNetwork(m, default="EBICglasso", tuning=0.5, corMethod = "npn", missing="listwise", sampleSize="maximum") # 绘制第一个网络并提取布局 netq_f <- plot(net_f, layout="spring", groups=groups) # 提取节点坐标布局矩阵 shared_layout <- netq_f$layout # 使用相同布局绘制第二个网络 netq_m <- plot(net_m, layout=shared_layout, groups=groups)
原理说明
estimateNetwork返回的是qgraph对象,调用plot()时实际使用的是plot.qgraph函数,其返回的对象中layout属性存储了每个节点的x、y坐标矩阵。将这个矩阵直接传给第二个图的layout参数,就能强制两个网络使用完全相同的节点位置,实现精准的视觉对比。
内容的提问来源于stack exchange,提问作者Anthony Albano
相关产品推荐
相关产品推荐

