r - 如何用两个类来调整 ggplot2 直方图,每个类都有独立的级别?
问题描述
假设我有这些数据:
xy <- data.frame(cbind(c(1,2,3,4,5,2,3,4),c(rep('A',5),rep('B',3))))
所以,当我输入
ggplot(xy, aes(x = x, fill = y)) +
geom_histogram(aes(y=..count../sum(..count..)), position = "dodge")
我得到这个图形:
但我想看到水平独立地拉平,即红条拉平至 0.2,蓝条拉平至 0.333。我怎样才能实现它?
另外,如何设置 y 轴以百分比而不是小数显示数字?
提前谢谢了。
解决方案
这似乎可以完成这项工作。它使用 ..density.. 而不是 ..count..,这是一种相当丑陋的方式来计算 A/B 因子列中的级别数,然后使用 scales 包来获取 y 轴上的标签
ggplot(xy, aes(x = x, fill = y)) +
geom_histogram(aes(y=..density../sum(..density..)*length(unique(xy$y)), group = y), position = "dodge") +
scale_y_continuous(labels = scales::percent_format(accuracy = 1))
推荐阅读
- linker - 链接到共享对象但发生未定义的引用?
- pytorch - LibTorch,将 deeplabv3_resnet101 转换为 c++
- javascript - 我们如何访问 java 脚本文件中的 web.config 值
- laravel - 允许在多对多关系上编辑资源 - 下拉菜单被禁用
- python - 如何显示系列中索引的所有值?
- azure - Windows -MDM 自动注册与 AAD 加入无法连接到使用条款 URL
- php - 我们如何允许用户从 Laravel 的前端设置 cron JOB?
- java - 删除所有出现的具有特定模式的字符串
- c# - Visual Studio 扩展、dll 部署和锁定 [C#, VSIX]
- google-cloud-platform - GCE SQL代理连接到错误的sql ip