【问题标题】:Rotate labels in a chordDiagram (R circlize)在 chordDiagram 中旋转标签(R circlize)
【发布时间】:2015-08-11 13:26:32
【问题描述】:

这是来自circlize 包的一些代码,用于创建和弦图。现在标签与圆的边缘平行。是否可以将标签旋转 90 度使其垂直于圆?

library(circlize)
set.seed(999)
mat = matrix(sample(18, 18), 3, 6)
rownames(mat) = paste0("Start", 1:3)
colnames(mat) = paste0("End", 1:6)
chordDiagram(mat)

在下图中,我手动插入了几个标签来显示我希望完成的任务(End5、End6、End7​​)。谢谢。

【问题讨论】:

  • chordDiagram 在此示例中拼写错误 - 以防有人尝试运行此代码
  • @baxx,现在应该修复了。

标签: r chord-diagram circlize


【解决方案1】:

根据您的示例数据,这是一种方法:

grid.col <- setNames(rainbow(length(unlist(dimnames(mat)))), union(rownames(mat), colnames(mat)))
par(mar = c(0, 0, 0, 0), mfrow = c(1, 2))

# original image
chordDiagram(mat, grid.col = grid.col) 

# now, the image with rotated labels
chordDiagram(mat, annotationTrack = "grid", preAllocateTracks = 1, grid.col = grid.col)
circos.trackPlotRegion(track.index = 1, panel.fun = function(x, y) {
  xlim = get.cell.meta.data("xlim")
  ylim = get.cell.meta.data("ylim")
  sector.name = get.cell.meta.data("sector.index")
  circos.text(mean(xlim), ylim[1] + .1, sector.name, facing = "clockwise", niceFacing = TRUE, adj = c(0, 0.5))
  circos.axis(h = "top", labels.cex = 0.5, major.tick.percentage = 0.2, sector.index = sector.name, track.index = 2)
}, bg.border = NA)

结果:

【讨论】:

  • 这很棒。我的示例以邻接矩阵的形式显示数据。如果我的数据是邻接列表的形式,我会重新处理grid.col 变量吗?
  • 我刚刚使用grid.col 来修复颜色的选择。 Tbh,从未使用过该软件包,但从小插图中获取了代码。
  • @Brian,您使用的是版本 >=0.3.0 的软件包吗?如果是这样,chordDiagram() 的输入变量现在可以是邻接列表,grid.col 可以设置为与输入为矩阵一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-28
  • 1970-01-01
  • 2017-10-18
  • 1970-01-01
  • 1970-01-01
  • 2020-01-23
  • 2013-08-09
相关资源
最近更新 更多