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?