ggplot geom_bar未“堆叠”或重新排序

时间:2020-02-03 17:26:28

标签: r ggplot2

我正在尝试对我的情节做一些事情。我拥有的基本情节的代码如下:

d %>% 
  ggplot(aes(x = Major.sectors, y = reorder(Obs, Obs, function(x)-length(x)), fill = Status)) +
  geom_bar(stat = "identity") +
  facet_wrap(~Model_Name, ncol = 1) +
  coord_flip()

我正在尝试订购这些条,以使最大的条在一侧,而最低的条在另一侧。我也想根据“状态”变量来堆叠它们。

我认为问题出在我尝试使用{{1}时,我尝试使用reorder(Obs, Obs, function(x)-length(x))所有观察值(包括Status = 1和Status = 0)时}} reorder()group_by然后计算总观测值,然后计算Model_Name数据,以使每个扇区和模型的数据在总观测值上重新排序。

第二,结果没有100%的意义。查看Major.sectorsreorder()的图。

3 Year

我得到:

Publishing, printing

查看当年的绘图时,“蓝色”或d %>% filter(Model_Name == "3 Year" & Major.sectors == "Publishing, printing") 颜色占据了柱状图空间的大约75%,但占# A tibble: 2 x 4 Status Model_Name Major.sectors Obs <fct> <chr> <chr> <int> 1 0 3 Year Publishing, printing 422 2 1 3 Year Publishing, printing 74

我认为问题再次出在Status = 1函数上。

数据:

74/422 = 0.175

1 个答案:

答案 0 :(得分:2)

您在错误的变量上传递了reorder函数,该变量将因子格式转换为“ Obs”值。

相反,请尝试以下操作:

ggplot(d, aes(x = reorder(Major.sectors, Obs), y = Obs, fill = Status))+
  geom_col()+
  facet_wrap(~Model_Name, ncol = 1)+
  coord_flip()

enter image description here