创建带比例的条形图

Create a bar chart with proportions

我正在尝试从类似于此的数据创建条形图:

bird dr season
ambi 45 molting
ambi 45 molting
ambi 45 molting
ambi 45 breeding
ambi 45 breeding
ambi 45 winter
ambi 45 winter
abum 60 molting
abum 60 molting
abum 60 molting
abum 60 breeding
abum 60 breeding
abum 60 winter
abum 60 winter

我希望所有的鸟都列在 y 轴上,我希望 x 轴是 dr.我希望根据每个季节的观察比例对条形进行颜色编码。例如,对于 abum,我希望条形达到 0.6,并且我希望条形根据季节进行颜色编码。 abum 在蜕皮季节有 3/7 的观测值,在繁殖期有 2/7,在冬季有 2/7。我希望栏中的颜色能够反映这一点。这是我目前的代码:

plot <- ggplot(data=test, aes(x=dr, y=bird, fill=season)) +
     geom_bar(stat="identity")+
     scale_fill_brewer(palette="Paired")+
     theme_minimal()

这在 y 轴上正确设置了我的鸟并对条形进行颜色编码,但我认为它使用某种计数值而不是 x 轴上的 dr 值。

代码生成的图像:

x 轴不反映 dr 值。我不确定 x 轴值的来源。我也想把鸟的顺序倒过来,让它们按照字母顺序从上到下排列。

我不确定 dr 部分。如果有什么不对的地方,请告诉我。

library(dplyr)
library(ggplot2)
library(forcats)

test %>%
  group_by(bird, season) %>%
  summarise(key = unique(dr),
            dr = sum(dr)) %>%
  group_by(bird) %>%
  mutate(dr = dr/sum(dr) * key/100) %>%
  ungroup %>%
  mutate(bird = fct_reorder(bird, desc(bird))) %>%
  ggplot(aes(x=bird, y=dr, fill=season)) +
  geom_bar(stat="identity")+
  scale_fill_brewer(palette="Paired")+
  theme_minimal() +
  coord_flip()