问题
I have had a look at this and other links therein. This is exactly what I am trying to achieve and failing. Here is some sample data:
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")
I'd like the individual line segments to be coloured as per the Color
variable. This is what I tried :
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
The above code only groups the segments and plots them as individual segments and not as one continuous line as desired. Would appreciate some help.
回答1:
@MLavoie thanks for your suggestion. On very similar lines I got a solution from the R-sig-geo list. Posting that solution here in case somebody runs into similar issues:
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
来源:https://stackoverflow.com/questions/51806407/adding-color-to-polylines-in-leaflet-in-r