R:调整circlize图中的标签
R: Adjusting Labels in circlize diagram
我有下面的代码,我正在尝试使用令人惊叹的包 circlize
将其制作成圆形图
我已经阅读了 vigenette 并承认其中的一些内容让我有点不知所措,
我想知道是否有一种快速的方法可以删除图表上的所有标签,包括刻度线,然后按照此 example
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()
我看到可以基于 page 17 of the vignette 使用代码
# 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)
我看到了的答案,非常相似
但是,这不会删除现有的标签,例如刻度线和扇区名称。
I was wondering if there is a quick way to remove all the labels on my
diagram including tick marks and just add back in AUDI, VOLVO and BMW
in light grey at the same angle to the sector as per this example
你可以试试
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)
这给了你
我实际上遇到了同样的问题,当我想要旋转标签时,"old" 标签仍然存在。我的诀窍是使用
弦图(as.matrix(数据).....等等
所以当我明确地说我有一个矩阵时它起作用了。
我有下面的代码,我正在尝试使用令人惊叹的包 circlize
将其制作成圆形图我已经阅读了 vigenette 并承认其中的一些内容让我有点不知所措,
我想知道是否有一种快速的方法可以删除图表上的所有标签,包括刻度线,然后按照此 example
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()
我看到可以基于 page 17 of the vignette 使用代码
# 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)
我看到了
但是,这不会删除现有的标签,例如刻度线和扇区名称。
I was wondering if there is a quick way to remove all the labels on my diagram including tick marks and just add back in AUDI, VOLVO and BMW in light grey at the same angle to the sector as per this example
你可以试试
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)
这给了你
我实际上遇到了同样的问题,当我想要旋转标签时,"old" 标签仍然存在。我的诀窍是使用
弦图(as.matrix(数据).....等等
所以当我明确地说我有一个矩阵时它起作用了。