我是 R 新手,正在尝试将 3 个直方图绘制到同一个图形上。
一切正常,但我的问题是你看不到 2 个直方图重叠的地方 - 它们看起来相当截断。
当我制作密度图时,它看起来很完美:每条曲线都被黑色框线包围,并且曲线重叠处的颜色看起来不同。
有人能告诉我用第一张图片中的直方图是否可以实现类似的功能?这是我正在使用的代码:

lowf0 <-read.csv (....)
mediumf0 <-read.csv (....)
highf0 <-read.csv(....)
lowf0$utt<-'low f0'
mediumf0$utt<-'medium f0'
highf0$utt<-'high f0'
histogram<-rbind(lowf0,mediumf0,highf0)
ggplot(histogram, aes(f0, fill = utt)) + geom_histogram(alpha = 0.2)

最佳答案

您当前的代码:

ggplot(histogram, aes(f0, fill = utt)) + geom_histogram(alpha = 0.2)

告诉 ggplot 使用 f0 中的所有值构建一个直方图,然后根据变量 utt 为该单个直方图的条形着色。

相反,您想要的是创建三个单独的直方图,使用 alpha 混合,以便它们彼此可见。因此,您可能希望对 geom_histogram 使用三个单独的调用,其中每个调用都获取自己的数据框并填充:
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) +

这是一个带有一些输出的具体示例:
dat <- data.frame(xx = c(runif(100,20,50),runif(100,40,80),runif(100,0,30)),yy = rep(letters[1:3],each = 100))

ggplot(dat,aes(x=xx)) +
    geom_histogram(data=subset(dat,yy == 'a'),fill = "red", alpha = 0.2) +
    geom_histogram(data=subset(dat,yy == 'b'),fill = "blue", alpha = 0.2) +
    geom_histogram(data=subset(dat,yy == 'c'),fill = "green", alpha = 0.2)

它产生这样的东西:

r - 在 R 中使用 ggplot2 叠加直方图-LMLPHP

编辑以修复错别字;你想要填充,而不是颜色。

关于r - 在 R 中使用 ggplot2 叠加直方图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6957549/

10-12 17:39
查看更多