标准化条形图

时间:2017-03-01 01:06:19

标签: r ggplot2 normalization geom-bar

我有一个数据框:

df<-data.frame(Pet=rep(c("Dog", "Cat", "Bird"), c(5,10,15)), Gen=rep(c("M", "F", "M", "F", "M", "F"), c(3,5,12,5,3,2)))

当我想象每只动物的雄性/雌性频率时,我得到了这张图:

ggplot(df, aes(Pet, group=Gen, fill=Gen)) + geom_bar(position="dodge", width=.5)

如何为具有相同高度的女性创建条形图,为相对高度与相应女性条形图相对应的男性条形图?

这样的事情: Something like this

1 个答案:

答案 0 :(得分:1)

一个简单的解决方法是首先规范化数据,然后进行绘图:

t = table(df)
as.data.frame.table(t/t[,'F']) %>% 
    ggplot(aes(x=Pet, y=Freq, group=Gen, fill=Gen)) + 
    geom_bar(position="dodge", width=.5, stat="identity")

enter image description here