Rstudio и ggplot, гистограмма с накоплением: два почти идентичных бита кода, fct_reorder работает с одним, а не с другим? - PullRequest
0 голосов
/ 08 апреля 2020

Я написал это, что прекрасно меняет порядок переменных mcr_variant по числу на моей гистограмме.

mcrxgenus%>%

mutate (mcr_variant = fct_reorder (mcr_variant, count ))%>%

ggplot (aes (fill = isolate_genus, y = count, x = mcr_variant)) +

geom_bar (position = "stack", stat = "identity") +

ordin_flip () +

labs (x = "вариант MCR", y = "Count", fill = "Изолировать род")

Я написал это отображать один и тот же набор данных немного по-разному.

mcrxgenus%>%

mutate (isolate_genus = fct_reorder (isolate_genus, count))%>%

ggplot ( aes (fill = mcr_variant, y = count, x = isolate_genus)) +

geom_bar (position = "stack", stat = "identity") +

ordin_flip () +

labs (x = "Изолировать род", y = "Количество", fill = "Вариант MCR")

Он НЕ переупорядочивает мою гистограмму по количеству. Я понятия не имею, что происходит. Мне кажется, для этого не должно быть причин. mcr_variant и isolate_genus являются категориальными переменными. mcr_variant имеет 12 уровней, а isolate_genus имеет 6 возможных уровней. Это единственная разница, о которой я могу думать. Кто-нибудь сталкивался с этой проблемой раньше? Это сводит меня с ума! Понятия не имею, что здесь происходит!

1 Ответ

2 голосов
/ 08 апреля 2020

Когда вы складываете бары, вы добавляете их значения. fct_reorder по умолчанию принимает медиану значений. Таким образом, если вариант MCR A имеет значения 1, 1, 1, 2, 1, его порядок будет определяться по медианному числу 1, а его высота равна сумме отсчетов 6. Тем временем, если вариант MCR B имеет счет 2, 3, его порядок будет равен медиане 2,5, но его сумма равна 5.

Вам необходимо fct_reorder использовать sum, как и на столбчатой ​​диаграмме с накоплением. Замените fct_reorder(isolate_genus, count) на fct_reorder(isolate_genus, count, sum).

Если это не сработает, пожалуйста, поделитесь воспроизводимым образцом данных, предпочтительно с dput, чтобы классы сохранялись и все копировалось / вставлялось, например, dput(mcrxgenus[1:10, ]) для первых 10 строк. Выберите подходящий образец, чтобы проиллюстрировать проблему.

...