R:在circlize图中调整标签

时间:2015-09-06 14:07:56

标签: r chord-diagram circlize

我有下面的代码,我试图使用惊人的包circlize制作一个圆形图

我已阅读vigenette,并承认其中一些已经过了我的脑袋,

我想知道是否有一种快速方法可以删除我的图表上的所有标签,包括刻度线,只需将奥迪,沃尔沃和宝马以浅灰色添加回与该扇区相同的角度{{3} }

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()

我发现可以使用代码

基于example
# 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)

我已经看到page 17 of the vignette的答案非常相似

但是,这不会删除现有标签,例如刻度线和扇区名称。

2 个答案:

答案 0 :(得分:2)

  

我想知道是否有快速删除我的所有标签的方法   图表包括刻度标记,只需添加回奥迪,沃尔沃和宝马   根据{{​​3}}

以与行业相同角度的浅灰色

您可以尝试

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)

给你

this example

答案 1 :(得分:0)

我实际上遇到了同样的问题,即当我需要旋转标签时,“旧”标签仍然存在。对我来说,诀窍是使用

chordDiagram(as.matrix(data)..... etc。

所以当我明确地说我有一个矩阵可以工作时。