我正在尝试使用 R 中的 Leaflet 包绘制一个放大器,并根据下表中的纬度和经度信息连接标记。
| Observation | InitialLat | InitialLong | NewLat | NewLong | |-------------|------------|-------------|-----------|-----------| | A | 62.469722 | 6.187194 | 51.4749 | -0.221619 | | B | 48.0975 | 16.3108 | 51.4882 | -0.302621 | | C | 36.84 | -2.435278 | 50.861822 | -0.083278 | | D | 50.834194 | 4.298361 | 54.9756 | -1.62179 | | E | 50.834194 | 4.298361 | 54.9756 | -1.62179 | | F | 50.834194 | 4.298361 | 51.4882 | -0.302621 | | G | 47.460427 | -0.530804 | 51.44 | -2.62021 | | H | 51.5549 | -0.108436 | 53.4281 | -1.36172 | | I | 51.5549 | -0.108436 | 52.9399 | -1.13258 | | J | 51.5549 | -0.108436 | 51.889839 | -0.193608 | | | 51.5549 | -0.108436 | 52.0544 | 1.14554 |
我想从 InitialLat
和 InitialLong
列中的坐标给定的初始点到 NewLat
给定的终点画线> 和 NewLong
列。
这是我当前的 R 代码,它只在 map 上绘制标记。
library(leaflet) map3 = leaflet(data) %>% addTiles() map3 %>% addMarkers(~InitialLong,~InitialLat, popup=~Observation)
最佳答案
这是使用 leaflet
包的替代方法。为了演示,我只是在你的数据中取了两个数据点。
mydf <- data.frame(Observation = c("A", "B"),
InitialLat = c(62.469722,48.0975),
InitialLong = c(6.187194, 16.3108),
NewLat = c(51.4749, 51.4882),
NewLong = c(-0.221619, -0.302621),
stringsAsFactors = FALSE)
我更改了 mydf
的格式并为传单创建了一个新的数据框。您可以通过多种方式 reshape 数据。
mydf2 <- data.frame(group = c("A", "B"),
lat = c(mydf$InitialLat, mydf$NewLat),
long = c(mydf$InitialLong, mydf$NewLong))
# group lat long
#1 A 62.46972 6.187194
#2 B 48.09750 16.310800
#3 A 51.47490 -0.221619
#4 B 51.48820 -0.302621
library(leaflet)
library(magrittr)
leaflet()%>%
addTiles() %>%
addPolylines(data = mydf2, lng = ~long, lat = ~lat, group = ~group)
我修剪了我得到的交互式 map 。请看下面的 map 。尽管此图像中两条线相连,但它们是分开的。如果您运行代码并放大,您会看到两条线是分开的。
关于r - 如何使用 R 中的 Leaflet 将两个坐标与一条线连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48129899/