You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在qgraph()中可视化比较两个网络图并展示关联差异?

在qgraph中实现两个网络图的重叠与差异可视化

当然可以!qgraph包完全支持两个网络图的对比可视化,不管是直接展示关联差异,还是把两个图重叠在一起对比,都有现成的实用方法。结合你给出的Big5数据集示例,我给你整理了两种最常用的实现方式:

方法1:绘制差异网络图(突出两组关联的变化)

这种方法会直接计算两个相关矩阵的差值,把差异值作为边的权重绘制网络图,能一眼看出哪些关联在两组中变化最大,正负差异也能通过颜色直观区分。

library("qgraph")
data("big5")

# 拆分数据集(修正原代码的索引问题,避免重复行)
big5_sub1 <- big5[1:249,1:10]
big5_sub2 <- big5[250:500,1:10]

# 计算两个相关矩阵的差异
cor_diff <- cor(big5_sub2) - cor(big5_sub1)

# 绘制差异网络图
qgraph(cor_diff, 
       title = "两组关联差异网络图",
       edge.color = ifelse(cor_diff > 0, "darkgreen", "darkred"), # 正差异绿,负差异红
       legend.cex = 0.8,
       layout = "spring")

方法2:重叠绘制两个网络图(同时展示两组的关联)

如果你想把两个图叠在一起对比,可以先绘制第一组的网络图,再用add=TRUE参数叠加第二组的图,通过颜色和透明度区分不同组的边,节点位置保持一致才能准确对比。

# 先计算统一布局,确保两组节点位置完全一致
layout_mat <- qgraph(cor(big5_sub1), plot = FALSE)$layout

# 绘制第一组网络图,作为基础层
qgraph(cor(big5_sub1), 
       title = "两组网络图重叠对比",
       edge.color = "darkblue",
       edge.labels = FALSE,
       layout = layout_mat)

# 叠加第二组网络图,用半透明红色区分
qgraph(cor(big5_sub2), 
       add = TRUE,
       edge.color = adjustcolor("darkred", alpha.f = 0.6),
       edge.labels = FALSE,
       layout = layout_mat)

额外小技巧

  • 可以通过edge.width = abs(cor_diff)*5这类设置,让差异大的边更粗,强化视觉对比
  • 如果需要标注边的差异数值,可以在差异网络图中开启edge.labels = TRUE

内容的提问来源于stack exchange,提问作者LLL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:13:14