Можно ли нарисовать радиолокационную карту в R, где каждый круг имеет свой цвет?

Используя пакет fsmb, я создал простую радиолокационную карту. Вот воспроизводимый пример:

#install.packages("fmsb")
library(fmsb)
data <- data.frame(rbind(rep(8,14),
          rep(0,14),
          c(3,4,4,4,3,4,4,4,4,3,3,3,3,3)))
colnames(data) <- c("biologia", "chemia", "fizyka", "geografia", "historia", "informatyka", "język angielski", "język polski", "matematyka", "muzyka / historia muzyki", "plastyka / sztuka / historia sztuki", "sprawność fizyczna", "technika","wiedza o społeczeństwie" )

radarchart(data, 
       axistype=1 ,
       pcol=rgb(0.2,0.5,0.5,0.5), 
       pfcol=rgb(0.2,0.5,0.5,0.5),
       plwd=4,
       cglcol="grey", 
       cglty=1, 
       axislabcol="grey", 
       caxislabels=seq(0,8,2), cglwd=0.8,
       vlcex=0.8)

Это производит регулярную диаграмму радара с заполненным многоугольником.

Тем не менее, я бы предпочел, чтобы внутренняя область была более красочной, то есть я хотел бы закрасить каждый внутренний круг другим цветом, оставив внешнюю область многоугольника пустой, чтобы различия между категориями были лучше видны аудитории **.

Буду очень признателен, если у кого есть идеи как этого добиться:)

1 ответ

Вы можете добавить еще несколько "данных" для создания дополнительных многоугольников, выровненных по сетке. Я сделал pcol=NA для дополнительных данных, чтобы мы просто получили многоугольник без точек. Я сделал несколько правдоподобных вариантов цвета, но учтите, что все полигоны перекрываются, поэтому цвета добавляются.

## Your data with additional polygons aligned to grid
data <- data.frame(rbind(rep(8,14),
          rep(0,14),
          rep(4,14), rep(6,14), rep(8,14),
          c(3,4,4,4,3,4,4,4,4,3,3,3,3,3)))

## Your color - to avoid repetition
COL1 = rgb(0.2,0.5,0.5,0.5)

## Plot
radarchart(data, 
       axistype=1 ,
       pcol=c(NA, NA, NA, COL1),
       pfcol=c("#FF000022", "#FF990022","#FFFF0022", COL1),
       plwd=4,
       cglcol="grey", 
       cglty=1, 
       axislabcol="grey", 
       caxislabels=seq(0,8,2), cglwd=0.8,
       vlcex=0.8)

Радарчарт с заполненным фоном

Обновление: основано на ответе на ответ. Если вы хотите, чтобы внутренняя часть отображаемой области была красочной, а внешняя - белой, вы можете добавить внутренние круги вместо внешних.

data <- data.frame(rbind(rep(8,14),
        rep(0,14),
        c(3,4,4,4,3,4,4,4,4,3,3,3,3,3),
        rep(2,14), rep(0,14)))

## Plot
radarchart(data, 
       axistype=1 ,
       pcol=c("#FF990088", NA,NA),
       pfcol=c("#FF990044","#FFFF0044","#FF000066"),
       plwd=4,
       cglcol="grey", 
       cglty=1, 
       axislabcol="grey", 
       caxislabels=seq(0,8,2), cglwd=0.8,
       vlcex=0.8)

Радиолокационная карта с красочным интерьером

Другие вопросы по тегам