r - 如何使用 R 中的 Leaflet 将两个坐标与一条线连接起来

标签 r leaflet r-leaflet

我正在尝试使用 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   |

我想从 InitialLatInitialLong 列中的坐标给定的初始点到 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 。尽管此图像中两条线相连,但它们是分开的。如果您运行代码并放大,您会看到两条线是分开的。

enter image description here

关于r - 如何使用 R 中的 Leaflet 将两个坐标与一条线连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48129899/

相关文章:

r - 更改传单中addLayersControl的图

R:在水平图中显示按分组变量分层的值

css - LESS 生成的样式表不起作用

knitr - 在循环中结合传单和 Markdown

Javascript getter - 为什么它在构造时被调用?

vue.js - 使用 Vue/Nuxt 删除传单属性?

r - 在 R 的传单中,可以使用列变量来改变 labelOption 大小、颜色等的大小吗?

R/ggplot : Vertical strip text with facet_wrap

r - 如何防止 ifelse() 将 Date 对象转换为数字对象

r - 保存工作区并在另一台计算机上打开它