Сортировка или заказ нескольких баров с помощью geom_col barplot
У меня есть такая таблица:
Year Substance Number
2013 A 32
2013 B 27
2013 C 17
2013 D 17
2013 E 15
2013 F 13
2014 B 20
2014 D 17
2014 A 16
2014 C 11
2014 F 9
2014 G 3
В основном, годы идут до 2018 года с 6 или 7 веществами каждый год, и у каждого вещества есть номер (частота появления). У веществ есть реальные названия, но я не могу опубликовать их в Интернете, поэтому я изменил их на A, B, C, D, E, F и G. Я не могу упорядочить столбцы как хочу, в порядке убывания.
Я провел много исследований в Интернете и перепробовал много вещей: forcats, фактор, уровни, переупорядочение и т. Д., И ничего из этого не сработало. У меня есть новичок в R, так что я не знаю, что было бы лучшим способом сделать то, что я хочу.
Когда я пытаюсь построить график таким образом, он помещает вещество в алфавитном порядке:
ggplot(Test, aes(x = Year, y = Number, fill = Substance)) + geom_col(position = "dodge")
На первый год 2013 заказ правильный. Я хочу, чтобы это выглядело так, в порядке убывания, раз в два года. Что я должен делать?
1 ответ
Это довольно сложно, потому что ваш порядок меняется в зависимости от года, поэтому преобразование факторных переменных становится беспорядочным. Вот один из способов сделать это, отсортировав позицию x по отдельному числовому значению:
library('data.table')
library('ggplot2')
Test[, Ranking:= rank(-Number, ties.method = 'first'), by = .(Year)]
ggplot(Test, aes(x = Ranking,
y = Number,
fill = Substance)) +
geom_col(position = 'dodge') +
scale_x_continuous(name = '', breaks = 0) +
facet_wrap(~Year)
Выход: