【发布时间】:2019-08-27 00:33:02
【问题描述】:
我在将第二个密度图添加到现有密度 + 直方图 ggplot 时遇到一些问题。也就是说,当我从另一个数据源添加第二个密度图时,它会更改第一个图的直方图中的 bin 数量。
这是说明我的问题的玩具数据/情节
# data
df <- data.frame(var1=rnorm(1e4,0,1), var2=rnorm(1e4,5,1))
# create plot function
plotFunct <- function(data, varName, nBins) {
p <- ggplot(data, aes_string(x=varName)) +
geom_histogram(aes(y=..density..), bins = nBins, fill = "white", colour = "black") +
geom_density(fill = "#FF6666", alpha = .3)
return(p)
}
# Now we run the function specifying 40 bins
p <- plotFunct(df, "var1", 40)
p
所以一切正常。
接下来创建第二个数据集以添加到第一个图形中...
outsideData <- data.frame(outside = rnorm(1e5, -2, 25))
...并将其添加到第一个情节。该数据的分布范围更广,因此为了使图表更易于理解,我们将使用 coord_cartesian() 函数将其限制在预先指定的范围内
p2 <- p + geom_density(data = outsideData, aes(x=outside), colour = "green") + coord_cartesian(xlim = c(-5,5))
p2
第二个密度图是绿色的。请注意,添加它的结果是第一个密度图中的直方图有一个 bin,而不是我们最初指定的 40 个 bin。不知何故,第二个密度图的添加影响了第一个密度图的分箱。然而,原图的密度部分似乎没有受到影响。
谁能告诉我如何恢复到原来的直方图?
【问题讨论】: