2012-06-15 25 views
7

का उपयोग कर डेटा.फ्रेम से पॉइंटिंग पॉइंट्स मैं विशाल डेटा के साथ एक पूर्ण नौसिखिया हूं। मेरे पास निम्न कोड है जो सफलतापूर्वक एक बाध्य नक्शा प्लॉट करता है। मैं डेटा.फ्रेम स्टोर्स को इंगित करने के रूप में जोड़ना चाहता हूं। मैं OpenStreetMap प्रलेखन से यह पता लगाने की सक्षम नहीं होने के लिए पहले से माफी माँगता हूँ ... नीचे दिए गए कोड:OpenStreetMap

library(OpenStreetMap) 
stores <- data.frame(name=c("Commercial","Union","Bedford"), 
       longitude=c(-70.25042295455933,-70.26050806045532,-70.27726650238037), 
       latitude=c(43.657471302616806,43.65663299041943,43.66091757424481)) 
lat <- c(43.68093,43.64278) 
lon <- c(-70.29548,-70.24097) 
portland <- openmap(c(lat[1],lon[1]),c(lat[2],lon[2]),zoom=15,'osm') 
plot(portland,raster=TRUE) 
#can't figure out what to put here. 

मुझे लगता है दुकानों के प्रारूप स्थानिक डेटा के लिए उचित नहीं है। अग्रिम धन्यवाद, - जेटी

उत्तर

12

मुझे OpenStreetMap पैकेज नहीं पता है। लेकिन मैं एक विकल्प प्रदान करता हूं जो अभी भी एक नक्शा मानचित्र खींचता है, लेकिन नक्शा लाने और खींचने के लिए ggmap पैकेज का उपयोग करता है। get_map फ़ंक्शन विभिन्न स्रोतों से मानचित्र ला सकता है: osm, google, stamen, और क्लाउडमेड; source के साथ सेट करें। इसके अलावा स्रोतों में विभिन्न शैलियों हैं, maptype के साथ सेट करें। मानचित्र की सीमा एक स्थान वेक्टर में दी जाती है। वैकल्पिक रूप से, स्थान वेक्टर उपयुक्त ज़ूम स्तर सेट के साथ मानचित्र का केंद्र दे सकता है। नक्शा ggplot2 के साथ खींचा गया है, और इसलिए नक्शे और बिंदुओं को मानचित्र में जोड़ा जा सकता है जैसे कि उन्हें किसी भी ggplot ऑब्जेक्ट में जोड़ा जा रहा है। निम्नलिखित को चलाने के लिए, ggmap और ggplot2 पैकेज स्थापित करने की आवश्यकता है।

library(ggmap) 

stores <- data.frame(name=c("Commercial","Union","Bedford"), 
     longitude=c(-70.25042295455933,-70.26050806045532,-70.27726650238037), 
     latitude=c(43.657471302616806,43.65663299041943,43.66091757424481)) 
location = c(-70.2954, 43.64278, -70.2350, 43.68093) 

# Fetch the map 
portland = get_map(location = location, source = "osm") 

# Draw the map 
portlandMap = ggmap(portland) 

# Add the points layer 
portlandMap = portlandMap + geom_point(data = stores, aes(x = longitude, y = latitude), size = 5) 

# Add the labels 
portlandMap + geom_text(data = stores, aes(label = name, x = longitude+.001, y = latitude), hjust = 0) 

परिणाम है:

enter image description here

लेबल, पृष्ठभूमि में खो जाने जा सकता है। उस स्थिति में, ऐसा कुछ उचित हो सकता है। पाठ को एक रूपरेखा देने के लिए यह code from here का उपयोग करता है।

portlandMap = ggmap(portland) + geom_point(data = stores, aes(x = longitude, y = latitude), size = 5) 

theta <- seq(pi/16, 2*pi, length.out=32) 
xo <- diff(location[c(1,3)])/250 
yo <- diff(location[c(2,4)])/250 

for(i in theta) { 
    portlandMap <- portlandMap + geom_text(data = stores, 
    aes_(x = stores$longitude + .001 + cos(i) * xo, 
     y = stores$latitude + sin(i) * yo, 
     label = stores$name), 
    size = 5, colour = 'black', hjust = 0) 
} 

portlandMap + 
    geom_text(data = stores, aes(x = longitude + .001, y = latitude, label=name), 
    size = 5, colour = 'white', hjust = 0) 

enter image description here

+0

धन्यवाद mucho ... इस पूरी तरह से काम करेगा! – JimmyT