r - 使用 ggplot2 覆盖具有不同行的两个直方图
问题描述
我想为两个正态分布创建一个带有两个叠加直方图的图。
例如:
dist1 <- rnorm(1000, 35, 3)
dist2 <- rnorm(1200, 40, 5)
如您所见,问题是分布具有不同的行数。
当您尝试叠加这两个直方图时,会弹出一个错误。
由于相同的原因,您也不能在同一数据框中重新排列两个分布。
我想过用 NULL 值填充最小的分布,但这似乎带来的问题比它解决的要多。
解决方案
您可以制作一个“长”的 data.frame 并使用 ggplot2 绘制它:
set.seed(1)
library(ggplot2)
dist1 <- rnorm(1000, 35, 3)
dist2 <- rnorm(1200, 40, 5)
df <- data.frame(variable = c(rep("dist1", length(dist1)),
rep("dist2", length(dist2))),
value=c(dist1, dist2))
ggplot(df, aes(x=value, fill=variable))+
geom_histogram()
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
您还可以考虑密度图,因为它们更容易叠加:
ggplot(df, aes(x=value, fill=variable))+
geom_density(alpha=.5)
推荐阅读
- python - 在python中更改矩阵的元素
- vba - VBA powerpoint 使文本框边框不可见
- python - 如何在 Python 3 的列表中搜索整数
- java - 删除 2D 数组的每个内部数组的 0 索引
- arrays - 带有数组的 for 循环中的空指针异常
- python - 在给定频率和 binwidth 时使用 seaborn 创建直方图
- javascript - 制作朋友列表快递应用程序的问题
- python - 如何使用逻辑回归分类器通过 LibShortText 获得文本分类预测的概率估计?
- git - 如何限制 git pre-commit 挂钩仅对具有某些扩展名的文件起作用?
- reactjs - Fetch API 无法加载 > Safari & Firefox > Cloudinary