我看过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
上面的代码仅将线段分组并将其绘制为单个线段,而不是按需要将其绘制为一条连续线。希望能有所帮助。
答案 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