Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Leaflet colours for polylines

Tags:

r

r-leaflet

I would like to use a basic data.frame to get three polylines each of different colours

I am currently using the below code as an example.

require(leaflet)
df <- data.frame(lat=c(rnorm(20,50),rnorm(40,0),rnorm(40,-30)),
                 lon=rnorm(100),
                 group=rep(c("a","b","c"),times=c(20,40,40)),
                 col=rep(rainbow(3,alpha=NULL),times=c(20,40,40)))
leaflet(df) %>% addTiles() %>% addPolylines(lng=~lon,lat=~lat,color=~col)

But I get one continous line and and not the three separate lines for each group.

I can separate the lines but doing an very inelegant trick of:

df_a <- rbind(df[df$group=="a",],data.frame(lat=NA,lon=NA,group="a",col=NA))
df_b <- rbind(df[df$group=="b",],data.frame(lat=NA,lon=NA,group="b",col=NA))
df_c <- rbind(df[df$group=="c",],data.frame(lat=NA,lon=NA,group="c",col=NA))
df <- rbind(df_a,df_b)
df <- rbind(df,df_c) 

before the leaflet function, but it still does not solve the colour problem.

How to get the three polylines with different colours?

like image 513
h.l.m Avatar asked Nov 02 '25 00:11

h.l.m


1 Answers

Here is a way to automate for each group in your dataset:

map <-  leaflet(df)
map <- addTiles(map)
for( group in levels(df$group)){
        map <- addPolylines(map, lng=~lon,lat=~lat,data=df[df$group==group,], color=~col)
        }
map
like image 179
HubertL Avatar answered Nov 03 '25 16:11

HubertL