2016-08-10 14 views
7

Tôi đang tạo một bản đồ trong R bằng cách sử dụng gói tờ rơi. Bản đồ cơ bản vẽ một đường từ Trung Quốc đến Mỹ. Nhưng nó không đi theo cách mà tôi mong đợi. Dưới đây là hình ảnh bản đồ. enter image description hereLàm thế nào để vẽ các đường chính xác trong tờ rơi R?

Vì vậy, bạn có thể thấy một đường giữa Trung Quốc đến Hoa Kỳ, nhưng nó băng qua các khu vực đất liền, thay vì đường biển trực tiếp.

Mã cho sản xuất bản đồ dưới:

library(leaflet) 
structure(list(lat = c(21.4982662200928, 25.3100662231445, 25.8857326507568, 
33.5610008239746, 33.9683494567871, 46.2030830383301), lng = c(121.90234375, 
131.111709594727, 133.618789672852, 159.100082397461, 165.190643310547, 
-123.813652038574), row_rank = structure(1:6, .Label = c("1", 
"2", "3", "4", "5", "6"), class = "factor")), .Names = c("lat", 
"lng", "row_rank"), row.names = c(NA, -6L), class = "data.frame") 

map <- leaflet() %>% addTiles(urlTemplate ="http://server.arcgisonline.com/ArcGIS/rest/services/Specialty/DeLorme_World_Base_Map/MapServer/tile/{z}/{y}/{x}") #"http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png" 
map <- map %>% 
    addCircleMarkers(data=df1, radius = 8, color = 'red', fill = TRUE, label = ~as.character(row_rank), labelOptions=c(noHide=TRUE)) %>% 
    addPolylines(data=df1, lng = ~lng, lat = ~lat) 
map 

Làm thế nào tôi có thể sửa chữa điều này?

+0

Tôi tự hỏi nếu 'addCircleMarkers()' có thể lấy 'label' và' labelOptions'. Khi tôi chạy mã của bạn, tôi nhận được thông báo sau: 'Lỗi trong addCircleMarkers (., Dữ liệu = df1, radius = 8, color =" red ", điền = TRUE,: đối số không được sử dụng (label = ~ as.character (row_rank) , labelOptions = c (noHide = TRUE)) ' – jazzurro

Trả lời

6

Điều này có thể hơi khác thường nhưng tôi đã thêm 360 độ vào kinh độ của điểm thứ 6, do đó ,123.813652038574 + 360 = 236.813652038574 và thay đổi giá trị đó trong khung dữ liệu và vẽ đồ tôi tưởng tượng đang tìm kiếm - một tuyến đường biển trực tiếp, thay vì tăng gấp đôi trở lại trên khắp các châu lục.

library(leaflet) 
df1 <- structure(list(lat = c(21.4982662200928, 25.3100662231445, 25.8857326507568, 
         33.5610008239746, 33.9683494567871, 46.2030830383301), lng = c(121.90234375, 
                         131.111709594727, 133.618789672852, 159.100082397461, 165.190643310547, 
                         -123.813652038574 + 360), row_rank = structure(1:6, .Label = c("1", 
                                       "2", "3", "4", "5", "6"), class = "factor")), .Names = c("lat", 
                                                     "lng", "row_rank"), row.names = c(NA, -6L), class = "data.frame") 

map <- leaflet() %>% addTiles() #"http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png" 
map <- map %>% 
    addCircleMarkers(data=df1, radius = 8, color = 'red', fill = TRUE, label = ~as.character(row_rank), labelOptions=c(noHide=TRUE)) %>% 
    addPolylines(data=df1, lng = ~lng, lat = ~lat) 
map 
Các vấn đề liên quan