сгруппированный барплот: порядок оси x и постоянная ширина полосы, в случае отсутствия уровней

Вот мой сценарий (пример, вдохновленныйВот и используяreorder вариант изВот):

library(ggplot2)
Animals <- read.table(
  header=TRUE, text='Category        Reason Species
1   Decline       Genuine      24
2  Improved       Genuine      16
3  Improved Misclassified      85
4   Decline Misclassified      41
5   Decline     Taxonomic       2
6  Improved     Taxonomic       7
7   Decline       Unclear      10
8  Improved       Unclear     25
9  Improved           Bla     10
10  Decline         Hello     30')

fig <- ggplot(Animals, aes(x=reorder(Animals$Reason, -Animals$Species), y=Species, fill = Category)) + 
  geom_bar(stat="identity", position = "dodge")

Это дает следующий выходной график:

Я бы хотел заказать барплоттолько при условии «Отклонить», и все «Улучшенные» не будут вставлены в середину. Вот что я хотел бы получить (после некоторого редактирования SVG):

Таким образом, теперь все условие «Отклонение» сортируется, и после него следует условие «Улучшено». Кроме того, в идеале все стержни должны иметь одинаковую ширину, даже если условие не представлено для значения (например, «Bla» не имеет значения «Отклонить»).

Любая идея о том, как я мог бы сделать это без необходимости играть с редакторами SVG? Большое спасибо!

Ответы на вопрос(4)

Ваш ответ на вопрос