我有一个矩阵,里面有一排排的基因,以及它们在某些疾病类别中有多少种药物.

我试着用R做一个和弦图,把我所有的疾病分成几个部分,然后每种疾病有多少个基因有药物,哪些有重叠.

然而,使用我的矩阵,当我try 运行chordDiagram(df)时,我得到了一个和弦图,其中不仅有疾病的部分,还有基因的部分.

我的数据片段如下所示:

df <- structure(c(0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 2, 
0, 8, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 
0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1), .Dim = c(5L, 
11L), .Dimnames = list(c("CASZ1", "CASQ2", "VANGL1", "CLCN6", 
"MTHFR"), c("heart failure", "cardiomyopathy", "coronary artery disease", 
"cardiovascular disease", "hypertension", "atrial fibrillation", 
"arrhythmia", "myocardial infarction", "cardiac arrest", "heart valve disease", 
"Other conditions")))

如何才能得到部分仅为疾病/我的列名的弦图?

推荐答案

chordDiagram需要一个邻接矩阵,而你实际上并没有.您可以将矩阵转换为基于共同基因链接的条件的边列表,然后将其转换为适合chordDiagram的邻接矩阵

do.call('rbind', lapply(apply(df, 1, \(x) colnames(df)[x > 0]), function(x) {
  if(length(x) < 2) return(NULL)
  if(length(x) == 2) return(t(x))
  return(t(combn(x, 2)))
})) |>
  igraph::graph.edgelist() |>
  igraph::as_adj(sparse = FALSE) |>
  circlize::chordDiagram()

enter image description here

R相关问答推荐

通过绘图 Select 线串几何体并为其着色

ggplot 2中的地块底图(basemaps_gglayer()不起作用)

从API中抓取R数据SON

编辑文件后编辑RhandsonTable

如果行和大于值,则过滤

selectInput不返回ALL,并将因子转换为shiny 的数字

将向量组合到一个数据集中,并相应地命名行

条形图和在Ploly中悬停的问题

R中边际效应包中Logistic回归的交互作用风险比

R-按最接近午夜的时间进行筛选

跨列查找多个时间报告

查找所有站点的最小值

我将工作代码重构为一个函数--现在我想不出如何传递轴列参数

将统计检验添加到GGPUBR中的盒图,在R

ArrangeGrob()和类似的替代方法不接受Grob列表.在Grid.Draw,返回:glist中的错误(...):仅允许在glist";中使用Grobs;

R try Catch in the loop-跳过缺少的值并创建一个DF,显示跳过的内容

使用&Fill&Quot;在gglot中创建 colored颜色 渐变

Ggplot2:添加更多特定 colored颜色 的线条

如何创建直方图与对齐的每月箱?

汇总数据:在跨越()all_of()Dynamic_list_of_vars=>;所选内容不能有缺失值的汇总()中出错