2012-02-27 16 views
5

शुभ दिन सब लोग,ggplot2 और नक्शे: geom_point और annotation_raster स्थिति बेमेल

नीचे मैं सफलतापूर्वक ggmap का उपयोग कर गूगल से एक रेखापुंज प्राप्त कर सकते हैं कोड का उपयोग करना, एक annotation_rasterggplot2 का उपयोग कर, और साजिश साइट इलाकों साजिश शीर्ष पर लाल डॉट्स के रूप में रास्टर परत के। साजिश पर पदों का मिलान नहीं होता है (उन्हें समुद्र तट का पालन करना चाहिए)। मुझे पता है कि मेरी साइट्स की स्थिति सही है क्योंकि वे प्लॉट करते हैं जहां वे Google धरती पर डेटा को केएमएल फ़ाइल के रूप में अपलोड करते हैं।

सुझावों की सराहना की जाएगी।

यह कोड इस प्रकार चलाएगा ... ध्यान दें कि आपको ggplot2 के विकास संस्करण की आवश्यकता है, जो कि जिथब पर उपलब्ध है। स्थापित करने के लिए:

# install.packages("devtools") 
library(devtools) 
install_github("ggplot2") 

और कोड के लिए:

library(ggplot2) 
library(ggmap) 
library(grDevices) 
theme_set(theme_bw()) 

# Some coordinates of points to plot: 
siteLat = c(-22.94414, -22.67119, -29.25241, -30.31181, -32.80670, -33.01054, -32.75833, -  33.36068, -31.81708, -32.09185, -32.31667, -34.13667, -34.05016, -33.91847, -34.13525, -34.12811, -34.10399, -34.16342, -34.41459, -34.58786, -34.83353, -34.37150, -34.40278, -34.17091, -34.08565, -34.04896, -33.98066, -34.02448, -34.20667, -34.05889, -33.97362, -33.99125, -33.28611, -33.02407, -33.01798, -32.99316, -31.09704, -31.05000, -30.91622, -30.70735, -30.28722, -30.27389, -29.86476, -29.54501, -29.49660, -29.28056, -28.80467, -27.42472) 
siteLon = c(14.50175, 14.52134, 16.86710, 17.26951, 17.88522, 17.95063, 18.02778, 18.15731, 18.23065, 18.30262, 18.32222, 18.32674, 18.34971, 18.38217, 18.43592, 18.45077, 18.48364, 18.85908, 19.25493, 19.33971, 20.00439, 21.43518, 21.73972, 22.12749, 23.05532, 23.37925, 23.64567, 23.89933, 24.77944, 25.58889, 25.64724, 25.67788, 27.48889, 27.91626, 27.92182, 27.95036, 30.18395, 30.21666, 30.32982, 30.48474, 30.76026, 30.83556, 31.04479, 31.21662, 31.24665, 31.44403, 32.07567, 32.73333) 
siteName = c(seq(1:length(siteLon))) 
sites <- as.data.frame(cbind(siteLat, siteLon, siteName)) 

# specify raster's approximate coordinates: 
lats = c(-35, -20) 
lons = c(10, 35) 

SAMap <- GetMap.bbox(lons, lats, maptype = "satellite") 

# extract "real" coords of raster: 
lonr <- c(SAMap$BBOX$ll[2], SAMap$BBOX$ur[2]) 
latr <- c(SAMap$BBOX$ll[1], SAMap$BBOX$ur[1]) 

# extract raster fill data: 
h_raster <- as.raster(SAMap$myTile) 

# plot using annotation_raster: 
g <- ggplot(sites, aes(siteLon, siteLat)) 
g + annotation_raster(h_raster, lonr[1], lonr[2], latr[1], latr[2]) + 
    geom_point(aes(x = siteLon, y = siteLat), colour = "red", data = sites) + 
    scale_x_continuous(limits = lonr) + 
    scale_y_continuous(limits = latr) 

(माफ करना, मैं एक छवि के रूप में मैं यहाँ नया हूँ पोस्ट नहीं कर सकते हैं)।

+0

: यह पोस्ट देखें। मुझे संदेह है कि आपको 'पुस्तकालय (रास्टर)' भी शामिल करने की आवश्यकता है। फिर भी, 'annotation_raster' नहीं मिला। किस पैकेज में (और संस्करण) यह है? – Andrie

+0

मुझे लगता है कि आपको एक प्रयोगात्मक 'ggplot2' संस्करण की आवश्यकता है, इसे स्थापित करने के बारे में जानकारी के लिए https://github.com/hadley/ggplot2 देखें। –

+0

मुझे लगता है कि 'as.raster()' लाइब्रेरी में रहता है (grDevices) '। 'annotation_raster'' ggplot2' संस्करण 0.9.0 में है। शीर्ष पर कोड अपडेट करेंगे। –

उत्तर