如何使用ggplot2中的填充美学绘制两个组的相对比例?

拉塞尔皮尔斯

如何使用ggplot2中的填充美学绘制两个组的相对比例?

我在这里问这个问题是因为关于此主题的其他几个答案似乎不正确(ex1ex2ex3),但“交叉验证”似乎在功能上禁止了R特定问题(CV meta)。..density..在概念上与比例有关(但与比例(ex4ex5)不同)。因此,正确的答案似乎与密度无关。

例子:

set.seed(1200)
test <- data.frame(
  test1 = factor(sample(letters[1:2], 100, replace = TRUE,prob=c(.25,.75)),ordered=TRUE,levels=letters[1:2]), 
  test2 = factor(sample(letters[3:8], 100, replace = TRUE),ordered=TRUE,levels=letters[3:8])
)
ggplot(test, aes(test2)) + geom_bar(aes(y = ..density.., group=test1, fill=test1) ,position="dodge")
#For example, the plotted data shows level a x c as being slightly in excess of .15, but a manual calculation shows a value of .138
counts <- with(test,table(test1,test2))
counts/matrix(rowSums(counts),nrow=2,ncol=6)

似乎产生正确输出的答案是不使用ggplot2的解决方案(在ggplot2之外进行计算)或要求使用面板而不是填充外观。

编辑:挖掘stat_bin会产生最终调用的函数是bin,但是bin仅传递x aes中的值。而无需重写stat_bin(或使得另一stat_),其在上述参考答案施加可以推广到填充AES黑客在不存在组AES的与Y AES以下代码:y = ..count../sapply(fill, FUN=function(x) sum(count[fill == x]))这只是将PANEL(位于StatBin末尾的隐藏列)替换为fill)。大概其他隐藏变量也可以得到相同的处理。

用户名

这是一个很棒的技巧,但它似乎可以完成您想要的...

ggplot(test, aes(test2)) + geom_bar(aes(y = ..count../rep(c(sum(..count..[1:6]), sum(..count..[7:12])), each=6), 
                                    group=test1, fill=test1) ,position="dodge") + 
                                      scale_y_continuous(name="proportion")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用ggplot2在一组内彼此相关的两个变量的图

在ggplot2中使用双Y轴在同一图上将两个变量绘制为线

ggplot2中用于两个不同颜色美学映射的不同调色板

如何使用ggplot2软件包在X轴上绘制2个类别变量并将两个连续变量绘制为“填充”?

如何在R中使用ggplot2绘制来自不同数据帧的两个序列彼此相对,而不建立新的数据帧?

ggplot2:将离散比例的折点更改为两个折点之间

在ggplot2中绘制两个误差线和一个点图

使用ggplot2(或其他)绘制两个变量

如何在ggplot2中使用两个向量绘制一条闭合线?

如何使用ggplot2设置两个x轴和两个y轴

ggplot2中两个数据集的两个具有不同比例的y轴

如何在ggplot2中将.csv文件中的两个变量绘制为两行?

尝试使用填充美学绘制两个直方图时出现问题

使用ggplot2在一张图中绘制两个单独的条形图

ggplot2在美学中也使用填充时更改颜色图例的填充

如何从共享相机视图的两个基本矩阵中计算相对比例?

在R中,如何使用ggplot2绘制比例不同但长度相等的散点图

两个不同的Y轴的比例不同-R中的ggplot2不会改变

如何使用ggplot2在一个绘图中合并两个或多个绘图

如何更改ggplot2中组的默认美学

用不同的x范围限制在ggplot2中绘制两个函数

使用ggplot2绘制两个线图。出错

ggplot2中两个离散比例的图例

使用 ggplot2 在条形图上绘制两个变量

使用 ggplot2 绘制两个时间序列的简单图

如何从ggplot2中的两列绘制两个变量(相同单位%)?

ggplot2 geom_bar:绘制两个变量的总和并按每个变量的比例分组

geom_line ggplot2 中同一组的两个不同图例

通过使用 ggplot2 连接两个点在 R 中绘制多个图