首页 文章

ggplot2 2d密度权重

提问于
浏览
1

我正在尝试使用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作为“高度”吗?如果是这样,为什么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 回答

  • 3

    geom_density2d 是"accepting"权重参数,但随后没有传递给 MASS::kde2d ,因为该函数没有权重 . 因此,您需要使用不同的2d密度方法 .

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

相关问题