【问题标题】:How to use library(circlize) in R when matrix is not symmetric当矩阵不对称时如何在R中使用库(circlize)
【发布时间】:2015-07-28 19:04:07
【问题描述】:

我正在尝试使用circlize 库绘制流程图。我的代码在下面,数据集(i75_from_flow.RData)在这里:https://drive.google.com/file/d/0B0hTmthiX5dpbFJFc2hfN1Zqd1k/view

library(reshape)
t1 <- cast(i75_from_flow, ORIGFIPS ~ TERMFIPS)
i75_from_flow2<- data.matrix(subset(t1, select=-c(1)))
rownames(i75_from_flow2) <- t1$ORIGFIPS
colnames(i75_from_flow2) <- colnames(i75_from_flow2)

library(circlize)
circos.par(gap.degree = 8)
chordDiagram(i75_from_flow2, grid.col= length(union(rownames(i75_from_flow2),colnames(i75_from_flow2))), directional = TRUE, annotationTrack = "grid",
         preAllocateTracks = list(list(track.height = 0.05),
                                  list(track.height = 0.05)))

circos.trackPlotRegion(track.index = 1, panel.fun = function(x, y) {
xlim = get.cell.meta.data("xlim")
ylim = get.cell.meta.data("ylim")
sector.index = get.cell.meta.data("sector.index")
circos.text(mean(xlim), mean(ylim), sector.index, facing = "inside", niceFacing = TRUE)
}, bg.border = NA)

当我运行上述代码时,在代码中的 chordDiagramcircos.trackPlotRegion 行之后出现以下错误。

Error in .CELL.DATA[[1]] : subscript out of bounds

我的目标是获得一张图像,将矩阵单元显示为 ORIGFIPS 和 TERMFIPS 之间的流动。

我的问题是如何修复单元格数据问题中的错误。矩阵是否应该对称才能使 circlize 正常工作?在这项工作中并非总是如此。

【问题讨论】:

    标签: r visualization geometry circlize


    【解决方案1】:

    这是因为i75_from_flow2 包含NA 值。添加以下行:

    i75_from_flow2[is.na(i75_from_flow2)] = 0
    

    【讨论】:

    • 我现在因为忘记了这个简单的步骤而感到可笑:-)。谢谢。
    • 没问题。现在在新版本的包中,chordDiagram()如果输入是矩阵,会自动将NA转换为0。
    • 太棒了。感谢更新。我写了一篇关于如何开发这些可视化的简短简介,并欢迎您的 cmets 了解如何更好地改进它。 rpubs.com/matungawalla/circular_matrix
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多