2013-05-23 33 views
5

Tôi đang cố gắng lấy bản đồ raster đơn giản của toàn thế giới, sử dụng chức năng gói/get_map ggmap (xem mã bên dưới) kết hợp với ggplot2. Mức thu phóng chỉ đi về phía "3" và không cho phép phóng to thêmSử dụng bản đồ ggmap của thế giới

dường như không thể có bản đồ thế giới (như được mô tả trong mô tả ggmap: ("maps of the whole world currently not supported"). không thể/được hỗ trợ, có giải pháp thay thế/giải pháp thay thế để có chế độ xem bản đồ thế giới không?

EDIT/UPDATE on CÂU HỎI: Tôi đã cố gắng sử dụng bản đồ thế giới như được đề xuất - nhưng vì một lý do nào đó tôi không không hiểu tại sao nó không cho phép tôi vẽ điểm trong đồ thị (đó là mục đích ban đầu, và không hoạt động trong ggmap) - cảm thấy rằng tôi đang làm điều gì đó ngu ngốc/phạm sai lầm cơ bản.Tôi nhận được thông báo lỗi "Error in eval(expr, envir, enclos) : object 'group' not found"

EDIT-tiếc là tôi nhận được một thông báo lỗi bằng cách sử dụng OpenStreetMap (lỗi java. đang làm việc để sửa lỗi này - nhưng các giải pháp không phải OpenStreetMap sẽ tuyệt vời ...)

Tóm tắt - cách tiếp cận ggmap hoạt động với geom_point, nhưng tôi không thể có được toàn bộ bản đồ thế giới. cách tiếp cận worldmap nên làm việc, nhưng đối với một số lý do không thể có được điểm để vẽ .....

MỚI MÃ mỗi bên dưới:

ggmap cách tiếp cận:

library(ggmap) 
library(ggplot2) 

reclat=c(50,20,30,40) 
reclong=c(30,40,30,50)   
points=as.data.frame(cbind(reclat,reclong)) 

al1 = get_map(location = 'Europe', zoom = 3, color="bw",maptype = "satellite") 
map = ggmap(al1) 
map 

#this works 
map+geom_point(data=points, aes(x=reclong, y=reclat, colour="red")) 

worldmap cách tiếp cận:

world <- map_data("world") 
worldmap <- ggplot(world, aes(x=long, y=lat, group=group)) + 
    geom_path() + 
    scale_y_continuous(breaks=(-2:2) * 30) + 
    scale_x_continuous(breaks=(-4:4) * 45) 

#this works 
worldmap + geom_point(aes(50, 30, colour="red")) 

#this doesnt work 
worldmap + geom_point(data=points, aes(x=reclong, y=reclat, colour="red")) 
+0

việc kiểm tra này ra: http://stackoverflow.com/questions/16028659/plots-on-a-map-using-ggplot2/16054062#16054062 – JT85

+0

tháng mười hai của năm 2016. Bây giờ là yếu tố zoom tối thiểu là zoom = 2, điều này mang lại cho bạn bán cầu đông/tây của địa cầu. – knb

Trả lời

3

Bạn có thể thử gói OpenStreetMap, có quyền truy cập vào nhiều máy chủ bản đồ khác nhau, mặc dù không phải GoogleMaps.

library(OpenStreetMap) 
library(ggplot2) 
map <- openmap(c(70,-179), 
       c(-70,179),zoom=1) 
map <- openproj(map) 


reclat <- c(50,20,30,40) 
reclong <- c(30,40,30,50)   
autoplot(map) + geom_point(aes(x=reclong,y=reclat)) 
+0

ggmap cũng thực hiện chức năng OpenStreetMap, vậy tại sao điều này không thể được thực hiện trong ggmap một mình? Ngoài ra, sử dụng mã ví dụ của bạn, độ phân giải của bản đồ khá tệ, tôi cho rằng có cách để cải thiện điều đó? – maj

+2

Bạn có thể phóng to thu phóng để có độ phân giải cao hơn. Gói sẽ ghép các ô tương ứng với nhau. nhưng có hai vấn đề khác ở đây. Đầu tiên là văn bản được thiết kế để được xem trong các tọa độ của mercator, chứ không phải lat-lat. Đây là lý do tại sao OpenStreetMap không chuyển thành lat dài theo mặc định. Cách thứ hai là cách mà ggplot2 (tức là lưới) hiển thị raster. Đối với một số lý do nó không có vẻ tốt như cơ sở. Xem sự khác biệt giữa cốt truyện (bản đồ) và autoplot (bản đồ). –

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