ggplot2 2d密度权重

时间:2012-11-23 13:22:53

标签: r ggplot2 visualization

我试图使用R中的ggplot2绘制一些具有2d密度轮廓的数据。

我得到一个稍微奇怪的结果。

首先我设置了我的ggplot对象:

p <- ggplot(data, aes(x=Distance,y=Rate, colour = Company))

然后我用geom_points和geom_density2d绘制它。我希望geom_density2d根据组织的大小(OrgSize变量)进行加权。但是,当我将OrgSize作为加权变量添加时,情节中没有任何变化:

此:

p+geom_point()+geom_density2d()

给出了相同的情节:

p+geom_point()+geom_density2d(aes(weight = OrgSize))

但是,如果我使用geom_smooth对黄土线进行相同操作,则加权确实会产生明显的差异。

此:

p+geom_point()+geom_smooth()

给出了不同的情节:

p+geom_point()+geom_smooth(aes(weight=OrgSize))

我想知道我是否不恰当地使用density2d,我应该使用轮廓并提供OrgSize作为&#39; height&#39 ;?如果是这样,为什么geom_density2d接受加权因子?

以下代码:

require(ggplot2)

 Company <- c("One","One","One","One","One","Two","Two","Two","Two","Two")
 Store <- c(1,2,3,4,5,6,7,8,9,10)
 Distance <- c(1.5,1.6,1.8,5.8,4.2,4.3,6.5,4.9,7.4,7.2)
 Rate <- c(0.1,0.3,0.2,0.4,0.4,0.5,0.6,0.7,0.8,0.9)
 OrgSize <- c(500,1000,200,300,1500,800,50,1000,75,800)

 data <- data.frame(Company,Store,Distance,Rate,OrgSize)

 p <- ggplot(data, aes(x=Distance,y=Rate))

 # Difference is apparent between these two
 p+geom_point()+geom_smooth()
 p+geom_point()+geom_smooth(aes(weight = OrgSize))

 # Difference is not apparent between these two
 p+geom_point()+geom_density2d()
 p+geom_point()+geom_density2d(aes(weight = OrgSize))

1 个答案:

答案 0 :(得分:3)

geom_density2d“接受”权重参数,但之后没有传递给MASS::kde2d,因为该函数没有权重。因此,您需要使用不同的2d密度方法。

(我知道我的答案并没有解决为什么帮助页面说geom_density2d“理解”权重参数,但是当我试图计算加权的2D-KDE时,我需要使用除MASS之外的其他包。也许这是一个@hadley放在帮助页面中的TODO然后被忽略了?)