创建带比例的条形图
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()
我正在尝试从类似于此的数据创建条形图:
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()