Adding color to polylines in leaflet in R

人盡茶涼 提交于 2021-01-28 08:13:09

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!