我试图使用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))
答案 0 :(得分:3)
geom_density2d
“接受”权重参数,但之后没有传递给MASS::kde2d
,因为该函数没有权重。因此,您需要使用不同的2d密度方法。
(我知道我的答案并没有解决为什么帮助页面说geom_density2d“理解”权重参数,但是当我试图计算加权的2D-KDE时,我需要使用除MASS之外的其他包。也许这是一个@hadley放在帮助页面中的TODO然后被忽略了?)