关闭ggmap上的多边形(stat_contour)

时间:2016-05-16 11:46:12

标签: r plot contour ggmap

我最近开始使用R进行编码,到目前为止,这是一段相当困难的旅程。我通过搜索互联网解决了大部分问题。但是,现在我遇到了一个我无法解决的问题。我在stackoverflow上发现了一种similair线程,(How to fill in the contour fully using stat_contour),但是在我的情况下它不起作用,ggmap + ggplot似乎无法一起工作。

所以,问题如下。我正在研究阿姆斯特丹的红灯区是否对当地企业有影响。我这样做是通过创建显示阿姆斯特丹市中心商业密度的情节。我已经使用这段代码来实现它:

# Background map
geo <- geocode("Amsterdam", source="google")
lon <- geo$lon - .000
lat <- geo$lat + .000
map <- get_map(c(lon = lon, lat = lat), zoom=14,maptype = "satellite", color="color")

p <- ggmap(map) + theme(legend.position = c(1, 1), legend.justification = c(1,1)) + 
  xlab("Longitude") + ylab("Latitude")

# Map boundaries
#xmin = 4.86774509503174
#xmax = 4.92267673565674
#ymin = 52.3534171572766
#ymax = 52.386956071714

# RLD Map (so it can be read by ggplot2)
rldmap <- fortify(rld)
rld2map <- fortify(rld2)
natmap <- fortify(nat)

# Ticks
mid <- 250
mi <- 0
ma <- 500
r <- (ma-mi)/5
breaks = seq(mi,ma,r)

# Density
ncells <- 150

dens2000 <- kde2d(bedrijven2000$LONG, bedrijven2000$LAT, n = ncells)
densdf2000 <- data.frame(expand.grid(x = dens2000$x, y = dens2000$y), z = as.vector(dens2000$z))

densmap2000 <- p + geom_point(aes(x = x, y = y), data = coords2000, alpha = .5, size = 1) + 
  stat_contour(aes(x,y,z=z,fill = ..level..), data=densdf2000,geom="polygon", alpha=.3, inherit.aes = F) + 
  scale_fill_gradientn(name="density", breaks = breaks, colours=rev(brewer.pal(7,"Spectral"))) +
  geom_polygon(aes(x=long, y=lat, group=group), fill='grey', size=.2,color='green', data=rldmap, alpha=0) +
  geom_polygon(aes(x=long, y=lat, group=group), fill='grey', size=.2,color='green', data=rld2map, alpha=0) +
  geom_polygon(aes(x=long, y=lat, group=group), fill='grey', size=.2,color='green', data=natmap, alpha=0) +
  geom_point(aes(x = x, y = y), data = coords,color = 'yellow',alpha = 1, size = 1, shape=10) +
  annotate('text', x=4.892, y=52.374, label = "Amsterdam", col="white") +
  ggtitle("Business Density in Amsterdam year=2000")

plot(densmap2000)

使用此代码提供以下输出: output density plot Amsterdam

这里的问题是显示密度的多边形线在接近绘图边界时停止,这会产生令人不安的图像。

因此,我的问题是,如何让多边形忘记图形的边界并使它们连续?

1 个答案:

答案 0 :(得分:0)

由于这个主题:Truncated Density Polygons with ggmap

,最后我自己回答了这个问题

答案分为两部分:

1,编辑后台地图中的扩展和maprange

ggmap(map,extent =&#34; normal&#34;,maprange = FALSE)

2,在剧情代码中编辑,添加:

coord_cartesian(XLIM = C(分钟(4.86774509503174),最大值(4.92267673565674)), ylim = c(分(52.3534171572766),最大(52.386956071714)))+