ggplot条形图组百分比 [英] ggplot bar chart of percentages over groups
问题描述
如果我执行以下命令
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屋!