2016-08-04 37 views
1

Ich versuche, mehrere Shapefiles auf einer Karte über ggmap erstellt plotten. Dies funktioniert gut, jedoch möchte ich den Ansichtsbereich auf die Shapefile beschränken (und nicht auf das zoom-Argument in ggmaps angewiesen sein). Ich habe dies getan, indem ich die Bounding Box bekommen und sie als Argument in ggplots coord_cartesian übergeben. Während dies funktioniert, bekomme ich einige Risse Probleme an den Rändern der Karte - am speziellsten im westlichen Teil. Ich habe versucht, die x-y-Koordinaten manuell anzupassen, aber es scheint das Bild nur stark zu verzerren.Plotten Shapefile auf ggmap

Detroit Shapefile Map

Meine Gedanken sind leicht die gesamte Shape-Datei zu ermöglichen, verkleinern im Bereich aufgetragen werden, aber ich kann nicht scheinen, um herauszufinden. Es ist auch möglich, dass ich das völlig falsch mache.

Hier ist der Code, den ich verwendet habe, um die Karte zu generieren. Die Shape-Datei kann here

library(dplyr) 
library(ggmap) 
library(rgdal) 
library(broom) 

# Read in shapefile, project into long-lat 
# Create 'tbox' which is a minimum bounding box around the shapefile 

tracts <- readOGR(dsn = ".", layer = "CensusTracts2010") %>% 
    spTransform("+proj=longlat +ellps=WGS84") 
tbox <- bbox(tracts) 

# Plot data 
tract_plot <- tidy(tracts) 

DetroitMap <- qmap("Detroit", zoom = 11) 

DetroitMap + geom_polygon(data = tract_plot, aes(x = long, y = lat, group = id), color = "black", fill = NA) + 
    coord_cartesian(xlim = c(tbox[1,1], tbox[1,2]), 
        ylim = c(tbox[2,1], tbox[2,2])) 
+0

Was passiert, wenn Sie 'coord_map()' verwenden? –

Antwort

0

heruntergeladen werden folgte ich Ihren Workflow, die in dem gleichen Problem führte, wie Sie oben erwähnt. Dann änderte ich den Zoom auf die qmap Option 11-10 und es ergab sich ein viel besseres Bild, auch wenn Sie einige der Ortsnamen verlieren, aber Sie können sich die in manuell hinzufügen mit annotate:

DetroitMap <- qmap("Detroit", zoom = 10) 

DetroitMap + geom_polygon(data = tract_plot, aes(x = long, y = lat, group = id), color = "black", fill = NA) + 
    coord_cartesian(xlim = c(tbox[1,1], tbox[1,2]), 
        ylim = c(tbox[2,1], tbox[2,2])) 

enter image description here