3

我在 R 中有如下数据:

  bag_id location_type            event_ts
2     155        sorter 2012-01-02 17:06:05
3     305       arrival 2012-01-01 07:20:16
1     155      transfer 2012-01-02 15:57:54
4     692       arrival 2012-03-29 09:47:52
10    748      transfer 2012-01-08 17:26:02
11    748        sorter 2012-01-08 17:30:02
12    993       arrival 2012-01-23 08:58:54
13   1019       arrival 2012-01-09 07:17:02
14   1019        sorter 2012-01-09 07:33:15
15   1154      transfer 2012-01-12 21:07:50

其中类(event_ts)是POSIXct

我想在不同时间找到每个位置的袋子密度。

我使用了该命令geom_density(ggplot2),并且可以很好地绘制它。density(base)我想知道和这个命令之间是否有任何区别。我的意思是他们正在使用的方法或他们正在使用的默认带宽等方面的任何差异。

我需要将密度添加到我的数据框中。如果我使用过该函数density(base),我知道如何使用该函数approxfun将这些值添加到我的数据框中,但我想知道当我使用geom_density(ggplot2).

4

1 回答 1

7

快速阅读ggplot2 文档可以geom_density()发现它包含了stat_density(). 那里的第一个参数引用adjust来自基函数的参数density()。因此,对于您的直接问题-它们是基于相同的功能构建的,尽管使用的确切参数可能不同。您可以对设置这些参数进行一些控制,但您可能无法获得所需的灵活性。

使用的一种替代方法geom_density()是计算您想要的密度,ggplot()然后用 绘制它geom_line()。例如:

library(ggplot2)
#100 random variables
x <- data.frame(x = rnorm(100))
#Calculate own density, set parameters as you desire
d <- density(x$x)
x2 <- data.frame(x = d$x, y = d$y)

#Using geom_density()
ggplot(x, aes(x)) + geom_density()
#Using home grown density
ggplot(x2, aes(x,y)) + geom_line(colour = "red")

在这里,它们给出了几乎相同的图,尽管它们可能会随着您的数据和设置而变化更大。

于 2013-08-10T14:00:58.053 回答