#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.