我有兴趣生成一个position ='dodge'和fill =某个因子的直方图(即每个bar / group中不同子组的并排条),但是ggplot2给了我类似{{3}的东西},它有一个最右边的条,太宽,没有为空组保留空间,我想要。
这是一个简单的案例:
df = data.frame(a=c('o','x','o','o'), b=c('a','b','a','b'))
qplot(a, data=df, fill=b, position='dodge')
从the first plot here我得到了这个想法,虽然它在技术上产生了一个宽度相同的条形,但是没有为空组保留空间:
ggplot(df, aes(x=a, fill=a))+
geom_bar(aes(y=..count../sum(..count..))) +
facet_grid(~b,scales="free",space="free")
我如何实现我想要的目标?提前谢谢。
答案 0 :(得分:3)
ggplot
中的默认选项会产生我认为您描述的内容。 scales="free"
和space="free"
选项与您想要的相反,因此只需从代码中删除它们即可。此外,stat
的默认geom_bar
是通过计算进行汇总,因此您无需明确指定您的统计信息。
ggplot(df, aes(x=a, fill=a)) + geom_bar() + facet_grid(~b)