在R的传单的折线中添加颜色

时间:2018-08-12 06:44:15

标签: r polyline r-leaflet

我看过this及其中的其他链接。这正是我正在努力实现和失败的目标。这是一些示例数据:

structure(list(lat = c(51.88783, 51.8878441, 51.887825, 51.88659, 
51.8866959, 51.8874931, 51.89359, 51.8941269, 51.8977051, 51.8994331, 
51.90773, 51.91324, 51.91604, 51.9216652, 51.93353, 51.9419365
), lon = c(4.28763342, 4.287635, 4.28765154, 4.29007339, 4.29562664, 
4.29917, 4.30641174, 4.30561829, 4.29263353, 4.284498, 4.261132, 
4.24711847, 4.241075, 4.23262, 4.21523666, 4.1927), rateOfTurn = c(0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), 
    sogKts = c(0, 0, 0, 2.1, 3.4, 4.6, 3.5, 3.8, 7.4, 7.9, 8.8, 
    9.1, 9.2, 9.2, 9.3, 9.3), cog = c(15, 15, 15, 122.2, 70.4, 
    70, 323.2, 315.3, 289.3, 290.9, 303.8, 303.7, 308.9, 324.5, 
    304.9, 301.4), heading = c(163, 162, 163, 106, 71, 71, 303, 
    298, 289, 294, 303, 303, 310, 324, 304, 302), timestamp = c("2018-07-19T05:27:34", 
    "2018-07-19T05:39:35", "2018-07-19T05:45:34", "2018-07-19T05:57:37", 
    "2018-07-19T06:02:48", "2018-07-19T06:04:49", "2018-07-19T06:12:51", 
    "2018-07-19T06:13:32", "2018-07-19T06:19:08", "2018-07-19T06:21:41", 
    "2018-07-19T06:28:42", "2018-07-19T06:32:50", "2018-07-19T06:34:37", 
    "2018-07-19T06:37:41", "2018-07-19T06:43:49", "2018-07-19T06:50:09"
    ), Color = c("red", "red", "red", "red", "orange", "orange", 
    "orange", "orange", "orange", "orange", "yellow", "yellow", 
    "yellow", "yellow", "yellow", "yellow")), row.names = 32:47, class = "data.frame")

我希望各个线段按照Color变量进行着色。这就是我尝试过的:

map <-  leaflet(x)
map <- addTiles(map)
for( Color in levels(as.factor(x$Color))){
  map <- addPolylines(map, lng=~lon,lat=~lat,data=x[x$Color==Color,], color=~Color)
}
map

上面的代码仅将线段分组并将其绘制为单个线段,而不是按需要将其绘制为一条连续线。希望能有所帮助。

1 个答案:

答案 0 :(得分:1)

@MLavoie谢谢您的建议。在非常相似的行上,我从R-sig-geo列表中得到了一个解决方案。如果有人遇到类似问题,请在此处发布该解决方案:

x$lastColor = dplyr::lag(x$Color)
map <-  leaflet(x) 
map <- addTiles(map) 
for( Color in
levels(as.factor(x$Color))){   
  map <- addPolylines(map,lng=~lon,lat=~lat,data=x[x$Color==Color | x$lastColor==Color,], color=~Color) } 
map