Повернуть метки на хордовой диаграмме (R по кругу)

Вот некоторый код из пакета 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)
chordDiagrm(mat)

На рисунке ниже я вручную вставил несколько меток, чтобы показать, чего я надеюсь достичь (Конец5, Конец6, Конец7). Спасибо.

введите описание изображения здесь


person Brian P    schedule 11.08.2015    source источник
comment
chordDiagram в этом примере написан неправильно - на случай, если кто-нибудь попытается запустить этот код   -  person baxx    schedule 13.04.2019


Ответы (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)

Результат:

введите описание изображения здесь

person lukeA    schedule 11.08.2015
comment
Это круто. В моем примере данные представлены в виде матрицы смежности. Если бы мои данные были в виде списка смежности, я бы просто переработал переменную grid.col? - person Brian P; 12.08.2015
comment
Я просто использовал grid.col, чтобы исправить выбор цветов. Tbh, никогда не использовал пакет, но взял код из виньетки. - person lukeA; 13.08.2015
comment
@Brian, вы используете пакет с версией = 0.3.0? Если это так, входная переменная для chordDiagram() теперь может быть списком смежности, а grid.col может быть установлена ​​так же, как если бы вход был матрицей. - person Zuguang Gu; 13.08.2015