0

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

我读过小册子,承认其中一些让我有点不知所措,

我想知道是否有一种快速的方法可以删除图表上的所有标签,包括刻度线,然后按照此示例以与扇区相同的角度以浅灰色重新添加 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)中旋转标签的答案,非常相似

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

4

2 回答 2

2

我想知道是否有一种快速的方法可以删除图表上的所有标签,包括刻度线,然后按照此示例以与扇区相同的角度以浅灰色重新添加 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)

这给了你

在此处输入图像描述

于 2015-09-06T16:53:46.077 回答
1

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

chordDiagram(as.matrix(数据)......等。

所以当我明确说我有一个矩阵时,它就起作用了。

于 2019-03-15T09:33:45.503 回答