2016-05-16 17 views
0

Ich habe vor kurzem angefangen, mit R zu kodieren, bis jetzt ist es eine ziemlich Reise mit einigen Hindernissen auf der Straße gewesen. Die meisten von ihnen konnte ich durch die Suche im Internet lösen. Jetzt stoße ich jedoch auf ein Problem, das ich nicht beheben kann. Ich habe eine Art similair Thread auf Stackoverflow gefunden, (How to fill in the contour fully using stat_contour), aber es funktioniert nicht in meiner Situation, ggmap + ggplot scheint nicht in der Lage zu arbeiten.Nahes Polygon auf ggmap (stat_contour)

So ist das Problem das folgende. Ich untersuche, ob das Rotlichtviertel in Amsterdam Auswirkungen auf lokale Unternehmen hat. Ich mache das, indem ich ein Grundstück erstelle, das die Geschäftsdichte im Stadtzentrum von Amsterdam zeigt. Ich habe diesen Code verwendet, um es zu machen:

# 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) 

diesen Code liefert die folgende Ausgabe: output density plot Amsterdam

Das Problem hierbei ist, dass die Linien der Polygone, die die Dichte Anschlag zeigen, wenn sie nahe die Grenze der Handlung, das gibt ein beunruhigendes Bild.

Deshalb ist meine Frage, wie kann ich die Polygone die Grenzen des Graphen vergessen lassen und sie kontinuierlich machen?

Antwort

0

Managed die Frage mich am Ende zu beantworten, dank dieses Thema: Truncated Density Polygons with ggmap

die Antwort in zwei Teilen liegt:

1, bearbeiten erweitern und maprange im Hintergrund Karte

ggmap (Karte, Umfang = "normal", maprange = FALSE)

2, bearbeitet in Code für Grundstück, fügt:

coord_cartesian (Xlim = c (m in (4,86774509503174), max (4,92267673565674)), ylim = c (min (52,3534171572766), max (52,386956071714))) +