更改stat_density2d的单位

问题描述 投票:1回答:1

我正在使用ggmap和stat_density2d在R中制作密度图。代码看起来像这样:

riverside <- get_map('Riverside, IL', zoom = 14 , color = 'bw' ) 
RiversideMap <- ggmap(riverside, extent = 'device', legend = 'topleft')

# make the map: 
RiversideMap +  
stat_density2d(aes(x = lon, y = lat,
fill = ..level.. , alpha = ..level..),size = .01, bins = 16,
data = myData, geom = 'polygon') + 
scale_fill_gradient(low = "yellow", high = "blue") +  
scale_alpha(range = c(.0, 0.3), guide = FALSE)

通过要求在整个面积上的密度积分等于1,在stat_density2d中将地图颜色图例中显示的密度归一化。

在地图中,x和y轴的单位为十进制度。 (例如,通过坐标lat = 41.81888和lon = -87.84147指定一个点)。

为了便于解释,希望对地图图例中显示的密度值进行两次更改。

首先,我希望密度的积分为N(数据集中的数据点或地址的数量)而不是1。因此,图例中显示的值需要乘以N = nrow (myData)。

其次,我希望距离的单位为千米,而不是十进制度。对于我正在绘制的经度和纬度,这需要将图例中显示的值除以9203。

使用stat_density2d中的默认密度标准化,我在图例中获得了这些数字:c(2000,1500,1000,500)。

取N = 1600并执行上述重新缩放,则它变为c(348,261,174,87)(= 1600/9203 * 2000等)。显然,这些不是很好的整数,因此,如果图例编号为c(400,300,200,100),并且其在图例颜色栏中的位置也进行了相应调整,那就更好了。

进行这些重新缩放的优点在于,地图上的密度变得易于解释:它只是每平方千米的人数(而不是每平方度的人口密度)。

是否有简单的方法可以做到这一点?我是ggmap和ggplot2的新手。提前致谢。

我正在使用ggmap和stat_density2d在R中制作密度图。代码看起来像这样:riverside

r ggplot2 ggmap
1个回答
1
投票

简单来说,使用:

© www.soinside.com 2019 - 2024. All rights reserved.