ggplots根据条形

时间:2018-06-07 19:44:01

标签: r ggplot2

我想根据条形图中的值重新排列堆叠间隔图中的条形图。我的数据是男性对巢的贡献百分比,所以所有的栏总和为1。我想做的是根据第三名男性的贡献订购酒吧。

我的数据看起来像这样

Nest.ID Percentage  Male
6_2012  0.611111111 Primary
6_2012  0.222222222 Secondary
6_2012  0.166666667 Tertiary
7_2012  0.46875     Primary
7_2012  0.3125      Secondary
7_2012  0.21875     Tertiary

我正在用这段代码创建我的图表:

m <- ggplot()+geom_bar(aes(y=Percentage, x=Nest.ID,
                    fill=forcats::fct_rev(Male)),
                   data=males,stat="identity")

我曾尝试使用重新排序功能,但遇到了问题,因为所有嵌套总和为1,而我想通过“第三男性”订购的值是列中的一个因素。

1 个答案:

答案 0 :(得分:1)

当您为订单执行单个变量的相对简单的功能时,

reorder效果很好。你正在做一些更具体的事情,取决于两个变量,所以我只需要下拉订单并明确设置它。

my_order = with(males[males$Male == "Tertiary", ], as.character(Nest.ID[order(Percentage)]))
males$Nest.ID = factor(males$Nest.ID, levels = my_order)

作为旁注,请使用geom_col(...)代替geom_bar(..., stat = "identity")