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

R语言中使用Chord diagram展示变量共现关联强度的方法咨询

需求实现可行性

该需求完全可以实现,弦图是这类二元事件共现关系可视化的可选方案之一,能直观呈现不同事件共同发生的频率差异。

R语言弦图实现步骤

你可以使用circlize包完成绘制,完整代码如下:

1. 预处理数据,构建共现矩阵

# 安装加载依赖包
install.packages("circlize")
library(circlize)

# 将Yes/No转换为0/1数值矩阵,去掉无需分析的PatientID列
bin_df <- apply(df[, -1], 2, function(x) ifelse(x == "Yes", 1, 0))
# 计算两两变量同时为Yes的共现次数
co_occur_matrix <- t(bin_df) %*% bin_df
# 对角线赋值为0,忽略变量自身的共现统计
diag(co_occur_matrix) <- 0

2. 绘制弦图

chordDiagram(
  co_occur_matrix,
  # 自定义各变量的配色,可按需调整
  grid.col = c(A = "#E41A1C", B = "#377EB8", C = "#4DAF4A", D = "#984EA3", E = "#FF7F00", G = "#A65628"),
  transparency = 0.5,
  annotationTrack = c("grid", "name")
)
# 重置绘图参数,避免影响后续绘图
circos.clear()

绘制结果中,两个变量之间的弦宽度即代表共现次数,宽度越大说明两个事件同时发生的频率越高。

其他可选可视化方案

如果你的场景不需要突出共现的流向关系,也可以选择门槛更低、更易读的可视化方案:

  • 共现热图:用颜色深浅映射共现次数,支持直接读取数值,适合需要精确对比的场景,可通过pheatmap包或者ggplot2的geom_tile实现
  • 关联网络图:将每个事件作为节点,共现强度作为边的粗细/颜色深浅,可直观识别关联紧密的事件集群,可通过igraph、ggraph包实现
  • 标准化关联热图:如果需要消除事件本身发生率的影响,可计算两两变量的Phi相关系数后绘制热图,能更准确反映两个事件的关联紧密程度,而非单纯的共现次数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:51:03