我有这种桌子:
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种物质,每种物质都有一个数字(出现频率)。这些物质具有真实名称,但是我无法在Internet上发布它们,因此我将它们更改为A,B,C,D,E,F和G。我无法按我想要的顺序以降序排列这些条。
我在Internet上进行了很多研究,并尝试了许多方法:forcats,因子,水平,重新排序等,但都无济于事。我有个R新手,所以现在我真的不知道什么是做我想要的最好的方法。
当我尝试这样绘制时,它会将物质按字母顺序放置:
ggplot(Test, aes(x = Year, y = Number, fill = Substance)) + geom_col(position = "dodge")
2013年第一年,订单是正确的。我希望每隔一年按降序排列。我该怎么办?
答案 0 :(得分:0)
这有点棘手,因为您的订购逐年变化,因此因子变量转换变得混乱。这是通过使用单独的数值对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)
输出: