使用ggplot2获得单个面的反射百分比

时间:2012-03-08 08:27:40

标签: r ggplot2

所以我设法做到这一点......

ggplot(init, aes(x=factor(ANGLE), fill=NETWORK)) +
geom_bar(aes(y = (..count..)/sum(..count..))) +
facet_wrap(~SHOW) + opts(legend.position = "top") +
scale_y_continuous(labels = percent_format())

我的问题是,下面的彩色条代表我研究中所有电视节目的所有相机角度测量值的百分比。例如,对于ANGLE 2,OREILLY图表的条形值接近15%,对于图表中的所有ANGLE测量值均为15%,而不仅仅是OREILLY方面的测量值。我希望每个图表显示的是相对于一个电视节目(只是一个方面)的计数百分比,而不是所有这些。

这个想法是比较不同节目之间摄像机角度的比例使用情况,但是随着图形现在的方式,它倾向于使具有更多摄像机角度变化的节目看起来好像在摄像机角度花费更多时间2他们实际上相对于其他人而言。

令人沮丧的部分是我花了一个小时让它看起来像我想要的方式,然后我犯了更新R的错误。包随着它更新,这发生了。

缩小尺寸的数据表为available here

编辑:这也不起作用。我尝试将“group = NETWORK”放在aes(......,)两个(和两个)术语中,但没有任何改变。我也用“group = SHOW”尝试了同样的事情,我认为可能有更多的机会,因为我想在每个方面只获得一个SHOW的百分比(因此,每个方面的比例应该高达80左右) %,因为很多节目主要是摄像机角度2)。我错过了什么吗?

ggplot(init, aes(x=factor(ANGLE), fill=NETWORK), group=SHOW)
+ geom_bar(aes(y = (..count..)/sum(..count..), group=NETWORK)) +
+ facet_wrap(~SHOW) + opts(legend.position = "top") +
+ scale_y_continuous(labels = percent_format())

Problematic Graphic

2 个答案:

答案 0 :(得分:6)

使用..density..统计而不是..count..似乎对我有用:

ggplot(dat, aes(x=factor(ANGLE))) +
 geom_bar(aes(y = ..density..,group = SHOW,fill = NETWORK)) +
 facet_wrap(~SHOW) + 
 opts(legend.position = "top") +
 scale_y_continuous(labels = percent_format())

至少,这产生了不同的结果,我不能肯定地说它反映了你想要的东西。另外,我不确定为什么..count.. stat的表现如此。

enter image description here

答案 1 :(得分:-1)

这不再适用于较新版本的ggplot。现在的方法是+ stat_count(aes(y=..prop..))