2015-08-11 16 views
6

Ecco un codice dal pacchetto circlize per la creazione di un diagramma di accordi. Ora le etichette sono parallele al bordo del cerchio. È possibile ruotare le etichette di 90 gradi in modo che siano perpendicolari al cerchio?Ruota le etichette in un diagramma di accordo (R circoscrizione)

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) 

Nella figura sottostante ho inserito manualmente alcune etichette per mostrare quello che spero di realizzare (End5, End6, End7). Grazie.

enter image description here

risposta

5

In base ai dati di esempio, ecco un modo per farlo:

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) 

Risultato:

enter image description here

+0

Questo è grande. Il mio esempio mostra i dati sotto forma di una matrice di adiacenza. Se i miei dati fossero nella forma di un elenco di adiacenze, dovrei semplicemente rielaborare la variabile 'grid.col'? –

+0

Ho appena usato 'grid.col' per correggere la scelta dei colori. Tbh, non ha mai usato il pacchetto, ma ha afferrato il codice dalla vignetta. – lukeA

+1

@Brian, stai usando il pacchetto con versione> = 0.3.0? In tal caso, la variabile di input per 'chordDiagram()' ora può essere un elenco di adiacenza e 'grid.col' può essere impostato come se l'input fosse una matrice. –

Problemi correlati