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

问题描述 投票:1回答:1

我看过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

上面的代码只对段进行分组,并将它们绘制为单独的段,而不是根据需要绘制为一条连续的行。会感激一些帮助。

r polyline r-leaflet
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.