使用 geom_col 条形图对多个条形图进行排序或排序
Sort or order multiple bars with geom_col barplot
我有这种table:
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、factor、levels、reorder 等,none 都奏效了。我有一个 R 新手,所以我现在真的不知道什么是做我想做的事的最好方法。
当我尝试这样绘制时,它按字母顺序排列内容:
ggplot(Test, aes(x = Year, y = Number, fill = Substance)) + geom_col(position = "dodge")
第一年,2013,顺序是对的。我希望它每隔一年看起来像这样,按降序排列。我该怎么办?
这有点棘手,因为您的顺序每年都在变化,因此因子变量转换变得混乱。这是一种使用单独的数值对 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)
输出:
我有这种table:
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、factor、levels、reorder 等,none 都奏效了。我有一个 R 新手,所以我现在真的不知道什么是做我想做的事的最好方法。
当我尝试这样绘制时,它按字母顺序排列内容:
ggplot(Test, aes(x = Year, y = Number, fill = Substance)) + geom_col(position = "dodge")
第一年,2013,顺序是对的。我希望它每隔一年看起来像这样,按降序排列。我该怎么办?
这有点棘手,因为您的顺序每年都在变化,因此因子变量转换变得混乱。这是一种使用单独的数值对 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)
输出: