Я хочу создать двухслойную круговую/кольцевую диаграмму в R

и я пытаюсь создать двухслойный пирог, вот мои данные:

winner            <- c("White"   , "draw"    , "Black")
lowrated_scotch1  <- c(0.56617647, 0.04411765, 0.38970588) #winrate for Whites,Draws,Blacks in chess
highrated_scotch1 <- c(0.50000000, 0.03676471, 0.46323529)

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

Вот что я имею в виду :(картинка взята из гугла)

пример многослойной круговой диаграммы.

Это мой код:

multi_layer_scotch<-data.frame(winner = c("White","draw","Black"),
                               Y = c(highrated_scotch),
                               X = c(lowrated_scotch))


ggplot(multi_layer_scotch, aes(x = X, y = Y, fill = winner))+
  geom_bar(stat = "identity")+
  scale_fill_manual(values = c("#769656","#baca44","#eeeed2"))+
  coord_polar(theta="y")+
  theme_void()

и это то, что я получаю на выходе:

мой чудесный неполный график

Как вы можете видеть, график не разбит на слои так, как я хочу. 3 слоя моего графика должны быть собраны в один слой (для представления плательщиков с низким рейтингом) и сложены в другой слой (представляющий игроков с высоким рейтингом).

Я попытался следовать решению, приведенному в этом посте, но мне не удалось сделать это самостоятельно, я чувствовал, что он немного неполный: Многоуровневая круговая диаграмма в R

Я был бы рад, если бы вы могли помочь мне с этим! заранее спасибо


person Münzner Louis    schedule 30.04.2021    source источник


Ответы (1)


вы имели в виду что-то вроде этого:

df1 <- melt(multi_layer_scotch)
ggplot(df1, aes(x = variable, y = value, fill = winner))+
  geom_bar(stat = "identity")+
  coord_polar(theta="y")
person Vasily A    schedule 30.04.2021