我有下面显示的直方图,并且我已经在其上添加了2个密度图。它对应于组成数据的2个类。如何添加叠加在R中直方图上的密度图的第2个y轴?
我想在右侧添加第2个y轴,但它的高度与第1个y轴相同,因此密度图的高度看起来不会太小。 2个密度图的相对高度必须以直接比较,使得它们的组合面积为1
我有下面显示的直方图,并且我已经在其上添加了2个密度图。它对应于组成数据的2个类。如何添加叠加在R中直方图上的密度图的第2个y轴?
我想在右侧添加第2个y轴,但它的高度与第1个y轴相同,因此密度图的高度看起来不会太小。 2个密度图的相对高度必须以直接比较,使得它们的组合面积为1
z <- rnorm(100,.3,.2)
hist(z, xlab="", ylab="", main="", yaxt="n")
par(new=TRUE)
plot(density(z), xlab="", ylab="", main="", xaxt="n", yaxt="n")
axis(2, ...) # plug in the relevant values for `at` and `labels`
axis(4, ...) # plug in the relevant values for `at` and `labels`
如果使用ggplot2
可以使用geom_density(aes(y=..scaled..))
和geom_histogram(aes(y = ..ndensity))
比例同样
例如
x <- rnorm(400, 10, 5)
y <- rnorm(400, -10, 5)
dd <- rbind(data.frame(value = x, id = 'x'), data.frame(value = y, id = 'y'))
ggplot(dd, aes(x=value)) +
geom_histogram(aes(y=..ndensity..)) +
geom_density(aes(colour = id, y = ..scaled..))
谢谢你的回答!我在原来的问题上犯了一个错误。 2个密度图的总面积应该等于1,以便它们可以直接比较。由于直方图显示了整个数据,但是2个密度图显示了1个类的数据,所以它们的高度也应该更小。 在你的情节,我只看到1轴。我想在右边的第二个Y轴显示密度。 – Cheng 2013-05-02 19:55:40
Downvoting for no code and没有数据。 – 2013-05-02 06:43:33
您可以使用'latticeExtra'包中的'doubleYScale'。有关更多信息,请参阅此链接(http://latticeextra.r-forge.r-project.org/#doubleYScale&theme=default)。 – fdetsch 2013-05-02 07:20:48