R 从不平衡数据在ggplot中创建重叠直方图

R 从不平衡数据在ggplot中创建重叠直方图,r,ggplot2,R,Ggplot2,我在R中使用ggplot2绘制多个重叠直方图。我在其他类似的答案上看到过: ggplot(histogram, aes(f0)) + geom_histogram(data = lowf0, fill = "red", alpha = 0.2) + geom_histogram(data = mediumf0, fill = "blue", alpha = 0.2) + geom_histogram(data = highf0, fill = "green", alpha = 0.2) 如

我在R中使用ggplot2绘制多个重叠直方图。我在其他类似的答案上看到过:

ggplot(histogram, aes(f0)) + 
geom_histogram(data = lowf0, fill = "red", alpha = 0.2) + 
geom_histogram(data = mediumf0, fill = "blue", alpha = 0.2) +
geom_histogram(data = highf0, fill = "green", alpha = 0.2)

如果我的数据来自长度相等的向量,这将非常有效,但它们不是。目前,我已经设置好了使用两个不同的单矢量数据帧创建两个单独的图。我找遍了所有地方,但找不到任何大小不同的数据

您可以对数据进行结构化,这样您就有了一个包含级别的列。然后,
ggplot
有一个分组选项

times=c(10, 20, 30)
dat <- data.frame(levs=rep(c("low", "med", "high"), times=times),
                  counts=rexp(60, rate=c(rep(c(0.1, 0.2, 0.3), times=times))))
ggplot(dat, aes(counts, fill=levs, group=levs)) + 
    geom_histogram(position="dodge", alpha=0.2)
试试这个

ggplot(mapping = aes(f0)) + 
geom_histogram(data = histogram, fill = "red", alpha = 0.2) + 
geom_histogram(data = lowf0, fill = "red", alpha = 0.2) + 
geom_histogram(data = mediumf0, fill = "blue", alpha = 0.2) +
geom_histogram(data = highf0, fill = "green", alpha = 0.2)

如果您最初没有指定数据,您应该能够包含不同长度的数据。

谢谢您的回答!你能再解释一下你是如何构建数据框架的吗?我花了一天的时间学习了长数据结构和宽数据结构,以了解这里的情况,但这是完美的,正是我所需要的。非常感谢。
ggplot(mapping = aes(f0)) + 
geom_histogram(data = histogram, fill = "red", alpha = 0.2) + 
geom_histogram(data = lowf0, fill = "red", alpha = 0.2) + 
geom_histogram(data = mediumf0, fill = "blue", alpha = 0.2) +
geom_histogram(data = highf0, fill = "green", alpha = 0.2)