使用 ggplot2 在一个组合图中绘制密度和累积密度函数

Pet*_*tig 2 r ggplot2 cdf ecdf density-plot

我想得到一个结合了观测密度和累积分布函数的图。

通常的问题是两者的规模相差甚远。如何解决这个问题,即使用两个尺度,或者重新调整其中一个数据系列(最好在 ggplot 内,因为我想将数据的计算和显示分开)。

这是到目前为止的代码:

>dput(tmp) 产量

structure(list(drivenkm = c(8, 11, 21, 4, 594, 179, 19, 7, 10, 36)), .Names = "drivenkm", class = c("data.table", "data.frame" ), row.names = c(NA, -10L), .internal.selfref = <pointer: 0x223cb78>)

那我就做

p = ggplot(data = tmp, aes(x = drivenkm)) + geom_histogram(aes(y = ..density..), alpha = 0.2, binwidth = 3) + stat_ecdf(aes(x = drivenkm)); print(p)

我得到的是以下内容:

在此输入图像描述

显然,天平相差甚远。如何解决这个问题,以便可以以合理的方式解释直方图和 cdf?

谢谢!

Jam*_*mes 5

密度按 binwidth 缩放,因此面积总和为 1。因此,y直方图的 也应乘以此值:

p = ggplot(data = tmp, aes(x = drivenkm)) +
   geom_histogram(aes(y = 3*..density..), alpha = 0.2, binwidth = 3) +
   stat_ecdf(aes(x = drivenkm))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述