如何在 ggplot 和 lemon 中不自动对我的 y 轴条形图进行排序

How to not automatically sort my y axis bar plot in ggplot & lemon

我正在尝试按具有不同值的物种显示数据,具体取决于字母组。我发现显示数据的最佳方式是将分类数据放在 y 轴上并在 x 轴上显示 Total_Observed。 Lemon 允许我使用不同的 y 轴标签。不幸的是,图表按我的 y 轴标签排序,而不是按原样使用我的数据,它按最丰富的物种从最丰富的物种排序。有什么建议吗?

使用库:dplyr、ggplot2、lemon

我的数据:

|Letter |Species                  | Total_Observed|
|:------|:------------------------|--------------:|
|A      |Yellowtail snapper       |            155|
|A      |Sharksucker              |            119|
|A      |Tomtate                  |            116|
|A      |Mutton snapper           |            104|
|A      |Little tunny             |             96|
|B      |Vermilion snapper        |           1655|
|B      |Red snapper              |           1168|
|B      |Gray triggerfish         |            689|
|B      |Tomtate                  |            477|
|B      |Red porgy                |            253|
|C      |Red snapper              |            391|
|C      |Vermilion snapper        |            114|
|C      |Lane snapper             |             95|
|C      |Atlantic sharpnose shark |             86|
|C      |Tomtate                  |             73|
|D      |Lane snapper             |            627|
|D      |Red grouper              |            476|
|D      |White grunt              |            335|
|D      |Gray snapper             |            102|
|D      |Sand perch               |             50|
|E      |White grunt              |            515|
|E      |Red grouper              |            426|
|E      |Red snapper              |            150|
|E      |Black sea bass           |            142|
|E      |Lane snapper             |             88|
|E      |Gag                      |             88|
|F      |Yellowtail snapper       |            385|
|F      |White grunt              |            105|
|F      |Gray snapper             |             88|
|F      |Mutton snapper           |             82|
|F      |Lane snapper             |             59|

然后我 运行 我的代码 ggplot/lemon ggplot(test,aes(y=Species,x=Total_Observed))+geom_histogram(stat='identity')+facet_wrap(.~test$Letter,scales='free_y')

我的图表打印如下:

Johan Rosa 的分享博客(https://juliasilge.com/blog/reorder-within/) 的回答:解决方案是使用库(tidytext)。使用函数 reorder_within 和 scale_x_reordered.

更正后的代码: test %>% mutate(Species=reorder_within(Species,Total_Observed,Letter)) %>% ggplot(aes(Species,Total_Observed))+geom_histogram(stat='identity')+facet_wrap(~Letter,scales='free_y')+coord_flip()+scale_x_reordered()

现在将生成正确排序的图表