2014-10-08 15 views
5

Trợ giúp! Tôi có một bộ dữ liệu vị trí GPS x/y cho cây trong một khu rừng, và với các mã này thành một bản đồ khá trong ggplot:Không thể vẽ thanh tỷ lệ hoặc mũi tên hướng bắc trên 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) 

Tuy nhiên, không có vấn đề gì loại mã tôi cố gắng tôi không thể có được một mũi tên chỉ về phía bắc hoặc thanh tỷ lệ để vẽ trên bản đồ của tôi! Tôi đã thử nhiều giải pháp, một số trong đó trông như thế này:

cố gắng để thêm thanh tỷ lệ

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 

tôi cần cả hai phía bắc mũi tên và quy mô nhưng không phải âm mưu ý! Tại sao?

+0

Cảm ơn bạn rất nhiều! Nhưng nếu tôi cần ki lô mét! – user3720904

Trả lời

1

Hãy thử:

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") 

Nhìn vào GISTools để biết thêm chi tiết.

+0

Cảm ơn bạn rất nhiều, tôi sẽ cố gắng sau khi làm việc. Nhưng nếu tôi cần Meters, không dặm? – user3720904

+0

chỉ cần nhìn vào liên kết tôi đã cung cấp cho GISTools. – Ujjwal

+0

@ user3720904 cho tôi biết nếu tác phẩm này có hoạt động hay không. – Ujjwal

3

Gói ggsn hữu ích ở đây. Nếu không có dữ liệu GPS, tôi không thể thực thi tất cả tập lệnh của bạn, nhưng điều này sẽ thêm biểu tượng phía bắc và thanh tỷ lệ ở các vị trí hợp lý, với giới hạn x và y được chỉ định.

#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

Có thay đổi trong gói không? Tôi có một hộp đen xung quanh mũi tên. Bạn có biết tại sao? –

+0

@ M.Beausoleil Tôi chỉ đọc lại tập lệnh và không gặp vấn đề gì với nó, vì vậy có thể chúng tôi đang chạy các phiên bản khác nhau đang hoạt động khác nhau. Tôi đã sử dụng ggsn 0.3.0 để làm ví dụ trên. Xin lỗi tôi không thể giúp đỡ nhiều hơn nữa! –

Các vấn đề liên quan