ggplot条形图组百分比 [英] ggplot bar chart of percentages over groups

查看:187
本文介绍了ggplot条形图组百分比的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我执行以下命令

  data(mtcars)
ggplot(data = mtcars,aes(cyl ))+
geom_bar(aes(fill = as.factor(gear),y =(..count ..)/ sum(.. count ..))),position = dodge)+
scale_y_continuous(labels = percent)

我将得到并应用于您的示例代码

 库(ggplot2)
数据(mtcars)
mtcars $ gear<-as.factor(mtcars $ gear)
ggplot(data = mtcars,aes(cyl))+
geom_bar(aes(fill = as.factor(gear)),position = fill)

产生





这是您要找的吗?






事后:学习 melt()或它的alt必需品。然而, reshape2 中的 melt()在大多数用例中都可以通过 gather()成功实现。 来自 tidyr 软件包。


If I do the following command

data(mtcars)
ggplot(data=mtcars, aes(cyl))+
  geom_bar(aes(fill=as.factor(gear), y = (..count..)/sum(..count..)), position="dodge") + 
  scale_y_continuous(labels=percent)

I will get

However, what I really want to do is have each of the gear levels add up to 100%. So, gear is the subgroup I am looking at, and I want to know the distribution within each group.

I don't want to use facets and I don't want to melt the data either. Is there a way to do this?

解决方案

First of all: Your code is not reproducible for me (not even after including library(ggplot2)). I am not sure if ..count.. is a fancy syntax I am not aware of, but in any case it would be nicer if I would have been able to reproduce right away :-).

Having said that, I think what you are looking for it described in http://docs.ggplot2.org/current/geom_bar.html and applied to your example the code

library(ggplot2)
data(mtcars)
mtcars$gear <- as.factor(mtcars$gear)
ggplot(data=mtcars, aes(cyl))+
  geom_bar(aes(fill=as.factor(gear)), position="fill")

produces

Is this what you are looking for?


Afterthought: Learning melt() or its alternatives is a must. However, melt() from reshape2 is succeeded for most use-cases by gather() from tidyr package.

这篇关于ggplot条形图组百分比的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆