ggplot: раскрасьте границы geom_bar() по группам

#r #ggplot2

Вопрос:

Я пытаюсь раскрасить границы полос по группам (всплывающие данные) вместо отдельных точек (идентификатор), но не могу придумать, как это сделать.

Мои данные выглядят так:

              IND    POP  ancestry   value
    1:  Kharia15 Kharia ancestry1 0.00001
    2:  Kharia14 Kharia ancestry1 0.00001
    3:   Kharia4 Kharia ancestry1 0.00001
    4:   Kharia3 Kharia ancestry1 0.00001
    5:   Kharia1 Kharia ancestry1 0.00001
   ---                                   
18756: HGDP00548 Papuan ancestry8 0.99993
18757: HGDP00554 Papuan ancestry8 0.99993
18758: HGDP00549 Papuan ancestry8 0.99993
18759: HGDP00546 Papuan ancestry8 0.99993
18760: HGDP00540 Papuan ancestry8 0.99993
 

Вот код

 ggplot(long_form_combined, aes(x=IND, y=value, fill=ancestry))  
  geom_bar(position=position_stack(), stat="identity", width=1)  
  ylim(c(-1.2, 1.2))  
  scale_fill_manual(values=c("ancestry1"="RoyalBlue",
                             "ancestry2"="ForestGreen",
                             "ancestry3"="gold",
                             "ancestry4"="indianred1",
                             "ancestry5"="olivedrab1",
                             "ancestry6"="springgreen",
                             "ancestry7"="sienna",
                             "ancestry8"="skyblue"))  
  coord_polar(start = -1)   
  theme(axis.text.x = element_blank(),
        axis.title.x = element_blank(),
        axis.text.y = element_blank(),
        axis.title.y = element_blank(),
        axis.ticks.y = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.background = element_blank(),
        legend.title=element_blank())
 

Вот изображение
того, что у меня есть

и вот изображение того, что я хотел бы иметь

Порядок столбиков и центральная круговая диаграмма не имеют значения.

Спасибо

Ответ №1:

В своей aes() функции вы в настоящее время указываете x , y , и fill . Кроме того, укажите также color и присвоите ему то же значение, fill что и . Другими словами,

 ggplot(long_form_combined, aes(x=IND, 
                               y=value, 
                               fill=ancestry,
                               color=ancestry))
 

Комментарии:

1. Предложение состоит в том, чтобы раскрасить границу каждого IND, я хотел бы «сгруппировать» IND по POP и раскрасить границу каждого POP.