13

我可以轻松地按照 CRAN 上的包描述中的 Circlize 示例进行操作:

library('circlize')
set.seed(123)
mat = matrix(sample(1:100, 18, replace = TRUE), 3, 6)
rownames(mat) = letters[1:3]
colnames(mat) = LETTERS[1:6]
### basic settings
par(mfrow = c(3, 2))
par(mar = c(1, 1, 1, 1))
chordDiagram(mat)

但是,当我替换mat为时myMatrix出现此错误:

Error in circos.initialize(factors = factor(cate, levels = cate), xlim = cbind(rep(0,  : 
  Since `xlim` is a matrix, it should have same number of rows as the length of the level of `factors` and number of columns of 2.

有人可以解释为什么我会收到该消息吗?我看不出matmyMatrix其他之间的区别myMatrix更大:

    A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   A2  B2  C2  D2
A   1060360.659 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
B   0   32143148.75 996976.8445 0   4944648.524 5688385.041 61990.5913  0   0   0   0   -1563.225   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   31922242.6
C   0   0   6342776.843 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
D   0   0   0   28617385.81 17842142.64 0   0   0   0   0   0   0   0   409444.5633 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
E   0   0   0   4990921.202 105686446.3 536246.2188 0   0   0   0   0   0   0   8587899.583 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   378565.5746
F   0   92732.7741  0   4282.9319   33543553.89 36773976.59 1894761.93  0   0   333209.342  0   20739.0655  327956.7365 0   1022673.163 12229.0255  0   0   386112.1743 224039.3207 0   2395066.197 268247.2897 0   0   0   0   0   0   11926701.96
G   0   0   0   0   0   0   7753767.003 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
H   0   0   0   0   0   5184133.29  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
I   0   0   0   0   462767.7374 0   0   0   8992223.296 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
J   0   0   0   0   0   0   0   0   0   1950552.642 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
K   0   0   0   0   891032.5584 0   0   0   0   0   520107.9821 0   0   0   0   0   0   0   0   0   0   0   0   0   0   26724.8402  0   0   0   418902.5203
L   0   0   0   0   32044317.54 28147.5693  0   0   0   0   0   5383919.293 0   489912.5412 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   4559115.003
M   0   0   0   0   0   3125823.41  0   0   0   0   0   0   1738293.164 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
N   0   1053825.966 -8526.9758  1283429.314 60333051.34 2621812.931 -1130.1924  0   -779545.8004    8055145.684 918.8702    -379747.1919    -177.6205   298563606.5 -9316.8654  0   0   0   0   0   2631991.077 0   0   0   0   0   1107369.803 0   0   118812465
O   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1500451.292 0   0   0   0   0   0   0   0   0   0   0   0   0   0   7432418.396
P   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
Q   0   0   1496058.76  0   -4056617.74 294503  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   410.4   0   0   0   0   0   0   0   1765984767

代码

dd <- read.table(header = TRUE, text = "  rn  A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   A2  B2  C2  D2
A   1060360.659 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
                 B   0   32143148.75 996976.8445 0   4944648.524 5688385.041 61990.5913  0   0   0   0   -1563.225   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   31922242.6
                 C   0   0   6342776.843 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
                 D   0   0   0   28617385.81 17842142.64 0   0   0   0   0   0   0   0   409444.5633 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
                 E   0   0   0   4990921.202 105686446.3 536246.2188 0   0   0   0   0   0   0   8587899.583 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   378565.5746
                 F   0   92732.7741  0   4282.9319   33543553.89 36773976.59 1894761.93  0   0   333209.342  0   20739.0655  327956.7365 0   1022673.163 12229.0255  0   0   386112.1743 224039.3207 0   2395066.197 268247.2897 0   0   0   0   0   0   11926701.96
                 G   0   0   0   0   0   0   7753767.003 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
                 H   0   0   0   0   0   5184133.29  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
                 I   0   0   0   0   462767.7374 0   0   0   8992223.296 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
                 J   0   0   0   0   0   0   0   0   0   1950552.642 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
                 K   0   0   0   0   891032.5584 0   0   0   0   0   520107.9821 0   0   0   0   0   0   0   0   0   0   0   0   0   0   26724.8402  0   0   0   418902.5203
                 L   0   0   0   0   32044317.54 28147.5693  0   0   0   0   0   5383919.293 0   489912.5412 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   4559115.003
                 M   0   0   0   0   0   3125823.41  0   0   0   0   0   0   1738293.164 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
                 N   0   1053825.966 -8526.9758  1283429.314 60333051.34 2621812.931 -1130.1924  0   -779545.8004    8055145.684 918.8702    -379747.1919    -177.6205   298563606.5 -9316.8654  0   0   0   0   0   2631991.077 0   0   0   0   0   1107369.803 0   0   118812465
                 O   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1500451.292 0   0   0   0   0   0   0   0   0   0   0   0   0   0   7432418.396
                 P   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
                 Q   0   0   1496058.76  0   -4056617.74 294503  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   410.4   0   0   0   0   0   0   0   1765984767")

myMatrix <- as.matrix(dd[, -1])
rownames(myMatrix) <- dd[, 1]
chordDiagram(myMatrix)
4

1 回答 1

3

在旧版本的circlize中,矩阵必须是matrixclass 而不是 a data.frame,因此您需要通过以下方式显式转换数据框:

myMatrix = as.matrix(A + B)

在 circlize 中,数据框用于存储为邻接列表的数据(例如,第一列用于 group1,第二列用于 group2,第三列用于关系强度)。

由于read.table()总是返回一个data.frame类,在新版本的 circlize 中,如果矩阵表示为数据框就可以了。当它是一个数据框时,chordDiagram()会首先检查列数是否大于3,并且所有列都是数字。如果是这样,它将在内部转换为矩阵。

于 2016-07-11T12:44:26.527 回答