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

如何让ChordDiagram扇区显示模块真实大小而非仅重叠部分?

解决ChordDiagram扇区显示真实模块大小的问题

要让ChordDiagram的扇区反映模块真实大小(而非仅重叠部分),核心是给每个模块补充不重叠部分的数值——通过在邻接矩阵中添加模块的自链接(即模块到自身的数值),让扇区总大小等于「重叠数+不重叠数」。

步骤与代码示例

假设你已有重叠关系矩阵overlap_mat,以及两个数据集各模块的真实大小向量,按以下方式修改代码:

library(circlize)

# 示例重叠矩阵:行=数据集1模块,列=数据集2模块
overlap_mat <- matrix(c(10, 5, 3, 8), nrow = 2, ncol = 2,
                      dimnames = list(paste0("D1_", 1:2), paste0("D2_", 1:2)))

# 各模块真实大小(替换为你的实际数据)
dataset1_real_sizes <- c(20, 16) # D1_1、D1_2的真实大小
dataset2_real_sizes <- c(18, 13) # D2_1、D2_2的真实大小

# 构建包含自链接的完整邻接矩阵
all_sectors <- c(rownames(overlap_mat), colnames(overlap_mat))
full_adj_mat <- matrix(0, nrow = length(all_sectors), ncol = length(all_sectors),
                       dimnames = list(all_sectors, all_sectors))

# 填充重叠关系(原链接部分)
full_adj_mat[rownames(overlap_mat), colnames(overlap_mat)] <- overlap_mat

# 填充数据集1模块的不重叠部分(自链接)
d1_non_overlap <- dataset1_real_sizes - rowSums(overlap_mat)
full_adj_mat[rownames(overlap_mat), rownames(overlap_mat)] <- d1_non_overlap

# 填充数据集2模块的不重叠部分(自链接)
d2_non_overlap <- dataset2_real_sizes - colSums(overlap_mat)
full_adj_mat[colnames(overlap_mat), colnames(overlap_mat)] <- d2_non_overlap

# 绘制ChordDiagram
ChordDiagram(full_adj_mat,
             grid.col = c(D1_1 = "#E63946", D1_2 = "#457B9D", D2_1 = "#1D3557", D2_2 = "#A8DADC"),
             annotationTrack = "grid",
             preAllocateTracks = list(track.height = 0.1))

# 添加扇区标签
circos.track(track.index = 1, panel.fun = function(x, y) {
  circos.text(CELL_META$xcenter, CELL_META$ylim[1],
              CELL_META$sector.index,
              facing = "clockwise", niceFacing = TRUE, adj = c(0, 0.5))
}, bg.border = NA)

关键逻辑说明

  1. 自链接补充不重叠部分:每个模块的真实大小 = 与另一数据集的重叠总和 + 自身不重叠部分,将不重叠部分设为模块到自身的链接值,扇区会自动累加该值,最终大小等于真实模块大小。
  2. 矩阵构建:把两个数据集的模块都纳入邻接矩阵的行和列,既保留原重叠链接,又补充自链接数值。
  3. 视觉优化:自链接的连线会被扇区自身覆盖,不会干扰重叠关系的展示,仅影响扇区大小。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 16:14:55