Что-то не так с моим кодом ggplot2 или R для построения упорядоченного барплота с наследственным происхождением? - PullRequest
1 голос
/ 23 апреля 2020

Я хочу создать упорядоченный столбчатый график, в котором столбцы с одинаковыми пропорциями появляются вместе. У меня есть набор данных 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") 

enter image description here

У меня есть два вопроса: (1) я не знаю, как объединить этих людей с одинаковыми пропорциями, и я уже пробовал много решений по обмену стека, но не могу заставить их работать с моим набором данных!

(2) По какой-то причине кажется, что когда я реализую код для упорядочения отдельных лиц путем уменьшения / увеличения пропорций в одном ancestry, этот код иногда работает с игрушечными наборами данных меньших измерений, которые я создаю, но когда я пытаюсь построить 10000 отдельных лиц , код больше не работает! Это проблема в ggplot2 или я делаю что-то не так? Я был бы признателен за любой ответ на эту тему, чтобы также построить n = 10 000 столбцов с накоплением.

(3) Не уверен, что я это представляю, но на моем столбце с накоплением кажется, что R группирует столбец с накоплением графики в некотором неизвестном мне порядке - потому что я вижу регулярные промежутки между сложенными графиками На самом деле, не должно быть пробелов, и я не уверен, почему это происходит.

Буду признателен за любую помощь, поскольку я уже работал над этим кодом в течение смущающе долгого времени !!

1 Ответ

1 голос
/ 24 апреля 2020

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

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

Столбчатый столбец с экспоненциальной пропорцией:

ggplot(qm) + geom_bar(aes(x = individuals, y = exp(proportions), fill= ancestry), 
                      stat="identity")

enter image description here

Если вы не хотите, чтобы между барами были промежутки, установите значение widht в 1.

ggplot(qm) + geom_bar(aes(x = individuals, y = exp(proportions), fill= ancestry), 
                      stat="identity", 
                      width=1) 

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...