R: Регулировка меток в круговой диаграмме
У меня есть код ниже, который я пытаюсь превратить в круговую диаграмму, используя удивительный пакет Circize
Я прочитал vigenette и признаю, что некоторые из них прошли через мою голову,
Мне было интересно, есть ли быстрый способ удалить все метки на моей диаграмме, включая отметки, и просто добавить обратно в AUDI, VOLVO и BMW светло-серый цвет под тем же углом к сектору, что и в этом примере
library (dplyr)
library(circlize)
df = read.table(textConnection("
Brand_from model_from Brand_to Model_to
VOLVO s80 BMW 5series
BMW 3series BMW 3series
VOLVO s60 VOLVO s60
VOLVO s60 VOLVO s80
BMW 3series AUDI s4
AUDI a4 BMW 3series
AUDI a5 AUDI a5
"), header = TRUE, stringsAsFactors = FALSE)
# Add customer satisfaction (1 being positive, 0 being negative)
df <- df %>%
mutate(Customer.Sat = c("POS","NEG","NEG","POS","POS","NEG","NEG")) %>%
select(Brand_from,Brand_to,Customer.Sat )
# Set the colour Scheme for the association
col = c("NEG" = "red",
"POS" = "green")
diffHeight = c("POS" = -0.02,
"NEG" = 0.04)
# Build the Chord Diagram
chordDiagram(df[1:2],
col = col[df$Customer.Sat],
diffHeight = diffHeight[df$Customer.Sat])
circos.clear()
Я вижу, что это возможно на основе страницы 17 виньетки с использованием кода
# Rotates the Labels so they are 90 Degrees to the chord diagram
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)
Я видел ответ на Поворот меток в chordDiagram (R circlize), который очень похож
Однако это не удаляет существующие метки, такие как галочки и названия секторов.
1 ответ
Мне было интересно, есть ли быстрый способ удалить все метки на моей диаграмме, включая отметки, и просто добавить обратно в AUDI, VOLVO и BMW светло-серый цвет под тем же углом к сектору, что и в этом примере
Вы можете попробовать
chordDiagram(df[1:2], col = col[df$Customer.Sat], diffHeight = diffHeight[df$Customer.Sat], annotationTrack = "grid", preAllocateTracks = 1)
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), col = "lightgray")
}, bg.border = NA)
что дает вам
У меня фактически была та же проблема, что "старые" метки были все еще там, когда я хотел повернуть метки. Уловка для меня заключалась в использовании
chordDiagram(as.matrix(данные)..... и т.д..
поэтому, когда я прямо сказал, что у меня есть матрица, она работает.