我正在尝试使用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)
当我运行上面的代码时,我在代码中的 chordDiagram 和 circos.trackPlotRegion 行后面出现以下错误。
Error in .CELL.DATA[[1]] : subscript out of bounds
我的目标是获得一个图像,将矩阵单元格显示为ORIGFIPS和TERMFIPS之间的流程。
我的问题是如何修复单元格数据问题中的错误。矩阵是否应该对称以使circlize正常工作?这种努力并非总是如此。
答案 0 :(得分:4)
这是因为i75_from_flow2
包含NA
个值。添加以下行:
i75_from_flow2[is.na(i75_from_flow2)] = 0