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

基于二分类事件数据集生成事件关联矩阵或热图

计算二元事件共现矩阵并绘制热图

1. 计算共现次数矩阵

对于仅含0/1的二元事件数据集,两两事件的共现次数可以通过矩阵转置与原矩阵相乘直接计算,结果矩阵的(i,j)位置即为eventi和eventj同时为1的记录数,对角线为单个事件的发生次数:

# 加载数据集
df <- data.frame(event1 = c(1, 0, 0, 1, 0, 0, 1),
                 event2 = c(1, 1, 0, 1, 0, 0, 1),
                 event3 = c(1, 0, 0, 0, 0, 0, 0))

# 计算共现矩阵
co_occur_matrix <- t(df) %*% df
print(co_occur_matrix)

运行结果:

event1 event2 event3
event1      3      3      1
event2      3      4      1
event3      1      1      1

完全匹配你提到的统计结果:event1与event2共现3次,event2与event3共现1次。


2. 绘制共现热图

方法1:基础R热图函数

用R内置的heatmap()快速生成热图:

heatmap(co_occur_matrix,
        main = "事件共现次数热图",
        xlab = "事件", ylab = "事件",
        col = heat.colors(10)) # 自定义配色

方法2:用pheatmap包生成美观热图(推荐)

pheatmap支持显示单元格数值、自定义配色等功能,先安装并加载包:

install.packages("pheatmap")
library(pheatmap)

绘制带数值标注的热图:

pheatmap(co_occur_matrix,
         main = "事件共现次数热图",
         display_numbers = TRUE, # 显示共现次数数值
         color = viridis::viridis(10), # 用viridis配色(需先安装viridis包)
         border_color = "white")

如果没有viridis包,可替换为自定义渐变配色,比如colorRampPalette(c("#f7fbff", "#08306b"))(10)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 04:15:57