Я хочу создать упорядоченный столбчатый график, в котором столбцы с одинаковыми пропорциями появляются вместе. У меня есть набор данных 10000 человек, и каждый человек из трех групп населения. Вот мои данные.
library(MCMCpack)
library(ggplot2)
n = 10000
alpha = c(0.1, 0.1, 0.1)
q <- as.data.frame(rdirichlet(n,alpha))
head(q)
individuals <- c(1:nrow(q))
q <- cbind(q, individuals)
head(q)
V1 V2 V3 individuals
1 0.0032720232 3.381345e-08 0.996727943 1
2 0.3354060035 4.433923e-01 0.221201688 2
3 0.0004121665 9.661220e-01 0.033465842 3
4 0.9966997182 3.234048e-03 0.000066234 4
5 0.7789280208 2.090134e-01 0.012058562 5
6 0.0005048727 9.408364e-02 0.905411485 6
# long format for ggplot2 plotting
qm <- gather(q, key, value, -individuals)
colnames(qm) <- c("individuals", "ancestry", "proportions")
head(qm)
individuals ancestry proportions
1 1 V1 0.0032720232
2 2 V1 0.3354060035
3 3 V1 0.0004121665
4 4 V1 0.9966997182
5 5 V1 0.7789280208
6 6 V1 0.0005048727
Без какого-либо упорядочения данных я построил столбчатую диаграмму в виде столбцов:
ggplot(qm) + geom_bar(aes(x = individuals, y = proportions, fill= ancestry), stat="identity")
У меня есть два вопроса: (1) я не знаю, как объединить этих людей с одинаковыми пропорциями, и я уже пробовал много решений по обмену стека, но не могу заставить их работать с моим набором данных!
(2) По какой-то причине кажется, что когда я реализую код для упорядочения отдельных лиц путем уменьшения / увеличения пропорций в одном ancestry
, этот код иногда работает с игрушечными наборами данных меньших измерений, которые я создаю, но когда я пытаюсь построить 10000 отдельных лиц , код больше не работает! Это проблема в ggplot2 или я делаю что-то не так? Я был бы признателен за любой ответ на эту тему, чтобы также построить n = 10 000 столбцов с накоплением.
(3) Не уверен, что я это представляю, но на моем столбце с накоплением кажется, что R группирует столбец с накоплением графики в некотором неизвестном мне порядке - потому что я вижу регулярные промежутки между сложенными графиками На самом деле, не должно быть пробелов, и я не уверен, почему это происходит.
Буду признателен за любую помощь, поскольку я уже работал над этим кодом в течение смущающе долгого времени !!