2014-10-08 20 views
5

सहायता पर स्केल बार या उत्तर तीर प्लॉट नहीं कर सकता! मैं एक जंगल में पेड़ों के लिए जीपीएस x/y स्थानों में से एक डेटा सेट, और एक सुंदर नक्शे में इस कोड ggplot में साथ:ggplot2

#ggmap! 
library(ggmap) 
library(mapproj) 
map <- get_map(location = 'Madagascar', zoom = 10) 
geocode("kianjavato") 
#lon  lat 
#47.86682 -21.38024 
k <- "kianjavato" 
myMap <- get_map(location=k, source="stamen", maptype="toner", crop=FALSE, zoom=16) 
ggmap(myMap) 
m <- ggmap(myMap) + geom_point(aes(y = Lat, x = Lon, colour = Foraged, shape=Plot), data = GPS) 
n <- m + scale_colour_manual(values=c("blue", "red3")) + 
    scale_shape_discrete(solid=F, legend=F) + 
    scale_y_continuous(limits=c(-21.376,-21.3715)) + 
    scale_x_continuous(limits=c(47.865,47.869)) 
plot(n) 

हालांकि, कोई बात नहीं क्या कोड के प्रकार मैं कोशिश मैं नहीं मिल सकता है मेरे मानचित्र पर साजिश करने के लिए उत्तर या स्केल बार को इंगित करने वाला एक तीर! मैं कई समाधान की कोशिश की है, जिनमें से कुछ इस तरह दिखेगा:

पैमाने बार जोड़ने के लिए

map.scale <- ggmap(new) + (ggmap, extent = "normal", maprange = FALSE) %+% sites.data + 
    geom_point(aes(x = lon, y = lat, colour = colour)) + 
    geom_text(aes(x = lon, y = lat, label = label), hjust = 0, vjust = 0.5, size = 8/ptspermm) + 
    geom_segment(data = sbar, aes(x = lon.start, xend = lon.end, 
            y = lat.start, yend = lat.end)) + 
    geom_text(data = sbar, aes(x = (lon.start + lon.end)/2, 
           y = lat.start + 0.025*(bb$ur.lat - bb$ll.lat), 
       label = paste(format(distance, digits = 4, nsmall = 2),'km')), 
       hjust = 0.5, vjust = 0, size = 8/ptspermm) + 
    coord_map(projection="mercator", xlim=c(bb$ll.lon, bb$ur.lon), 
       ylim=c(bb$ll.lat, bb$ur.lat)) 

#library(SDMTools) 
#Scalebar(x=47.868,y=-21.375,distance=100,unit='m') #show values in meters 
#Error in map.scale(x = 50, y = -22) : argument "len" is missing, with no default 

map.scale(x=47.868, y=-21.375, ratio=FALSE, relwidth=0.2) 
#Error in map.scale(x = 47.868, y = -21.375, ratio = FALSE, relwidth = 0.2) : 
    unused argument(s) (ratio = FALSE, relwidth = 0.2) 
map.scale(x=47.868, y=-21.375) 
#Error in map.scale(x = 47.868, y = -21.375) : 
    argument "len" is missing, with no default 

मैं दोनों उत्तर तीर और बड़े पैमाने लेकिन न तो इच्छा भूखंड की जरूरत है की कोशिश कर रहा! क्यूं कर?

+0

बहुत बहुत शुक्रिया! लेकिन अगर मुझे किलोमीटर की जरूरत है तो क्या होगा! – user3720904

उत्तर

1

प्रयास करें: अधिक जानकारी के लिए GISTools पर

library(GISTools) 
map.scale(53,15,len=12,"Miles",4,0.5,sfcol='red') 
north.arrow(xb=15.75, yb=43.25, len=0.05, lab="N",col="cyan") 

देखो।

+0

बहुत बहुत धन्यवाद, मैं काम के बाद यह कोशिश करूंगा। लेकिन अगर मुझे मीटर की जरूरत है, मील नहीं? – user3720904

+0

बस GISTools के लिए प्रदान किए गए लिंक को देखें। – Ujjwal

+0

@ user3720904 अगर यह काम करता है या नहीं तो मुझे बताएं। – Ujjwal

3

ggsn पैकेज यहां उपयोगी है। जीपीएस डेटा के बिना, मैं आपकी सभी स्क्रिप्ट निष्पादित नहीं कर सकता, लेकिन निर्दिष्ट x और y सीमाओं के अनुसार, इसे उचित स्थानों में उत्तर प्रतीक और स्केल बार जोड़ना चाहिए।

#First, add a scale bar. 
n <- n + scalebar(location="bottomright",y.min=-21.3755, y.max=-21.3715, 
      x.min=47.865, x.max=47.869, dist=.1, dd2km= TRUE, model='WGS84', 
      st.dist=.04) 

#Now add a north arrow and plot the map. 
north2(n, x=.3, y=.8, symbol=9) 

north symbol and scale bar example

+0

क्या पैकेज में कोई बदलाव है? मेरे पास तीर के चारों ओर एक काला बॉक्स है। तुम जानते हो क्यों? –

+0

@ एम। बायौसोलिल मैं सिर्फ स्क्रिप्ट को फिर से चलाता हूं और इसमें कोई समस्या नहीं है, इसलिए यह संभव है कि हम अलग-अलग संस्करणों को चला रहे हैं जो अलग-अलग व्यवहार कर रहे हैं। मैंने ऊपर उदाहरण बनाने के लिए ggsn 0.3.0 का उपयोग किया। क्षमा करें मैं और मदद नहीं कर सकता! –