如何订购堆叠条形图
How to order a stack bar plot
我正在尝试按条的高度对堆叠的 geom_bar 或 geom_col 进行排序,但在 ggplot 的美学中安排我的数据集或使用“reorder()”不起作用,所以寻求帮助。这是我的数据集
df
Roost NGen Sex
<chr> <int> <chr>
1 A1 2 unkwn
2 A1 3 M
3 A1 10 F
4 A2 2 M
5 A2 3 F
6 AA1 12 unkwn
7 AA1 24 M
8 AA1 29 F
9 AC-01 4 M
10 AC-01 5 unkwn
当我绘制它时使用:
ggplot(df, aes(x= Roost, y= NGen, fill= Sex))+ geom_col()+ coord_flip()
条形是按栖息地的名称而不是条形的高度排序的
图片在此link 1: https://i.stack.imgur.com/cS7SB.png(我无法插入图片,因为我作为新用户没有足够的“声誉”点数。)
我尝试了以下代码来尝试按高度组织列
ggplot(df, aes(x= reorder(Roost,NGen), y= NGen, fill= Sex))+ geom_col()+ coord_flip()
代码确实以某种方式组织了数据,生成了下图
但是,如您所见,条形图并未按高度排列。如果我使用 geom_bar 或 geom_col.
结果是一样的
我也尝试过将 Roost 转换为因子并将 NGen 转换为数字并使用 aes(x= fct_reorder(Roost,NGen), y= NGen, fill= Sex)
但我没有得到想要的结果。
非常感谢任何线索
干杯,
戴安娜
对每个Roost
、arrange
的数据计算NGen
的总和,根据总和分配因子水平,然后绘制数据。
library(dplyr)
library(ggplot2)
df %>%
group_by(Roost) %>%
mutate(NGen_s = sum(NGen)) %>%
ungroup %>%
arrange(NGen_s) %>%
mutate(Roost = factor(Roost, unique(Roost))) %>%
ggplot(aes(x= Roost, y= NGen, fill= Sex)) +
geom_col() + coord_flip()
我正在尝试按条的高度对堆叠的 geom_bar 或 geom_col 进行排序,但在 ggplot 的美学中安排我的数据集或使用“reorder()”不起作用,所以寻求帮助。这是我的数据集
df
Roost NGen Sex
<chr> <int> <chr>
1 A1 2 unkwn
2 A1 3 M
3 A1 10 F
4 A2 2 M
5 A2 3 F
6 AA1 12 unkwn
7 AA1 24 M
8 AA1 29 F
9 AC-01 4 M
10 AC-01 5 unkwn
当我绘制它时使用:
ggplot(df, aes(x= Roost, y= NGen, fill= Sex))+ geom_col()+ coord_flip()
条形是按栖息地的名称而不是条形的高度排序的
图片在此link 1: https://i.stack.imgur.com/cS7SB.png(我无法插入图片,因为我作为新用户没有足够的“声誉”点数。)
我尝试了以下代码来尝试按高度组织列
ggplot(df, aes(x= reorder(Roost,NGen), y= NGen, fill= Sex))+ geom_col()+ coord_flip()
代码确实以某种方式组织了数据,生成了下图
但是,如您所见,条形图并未按高度排列。如果我使用 geom_bar 或 geom_col.
结果是一样的我也尝试过将 Roost 转换为因子并将 NGen 转换为数字并使用 aes(x= fct_reorder(Roost,NGen), y= NGen, fill= Sex)
但我没有得到想要的结果。
非常感谢任何线索
干杯,
戴安娜
对每个Roost
、arrange
的数据计算NGen
的总和,根据总和分配因子水平,然后绘制数据。
library(dplyr)
library(ggplot2)
df %>%
group_by(Roost) %>%
mutate(NGen_s = sum(NGen)) %>%
ungroup %>%
arrange(NGen_s) %>%
mutate(Roost = factor(Roost, unique(Roost))) %>%
ggplot(aes(x= Roost, y= NGen, fill= Sex)) +
geom_col() + coord_flip()