Home > Enterprise >  How to differ circles color based on if condition?
How to differ circles color based on if condition?

Time:09-28

I need to make make circles different colors based on if condition. I added if statement to color= parameter but all circles are coloured only in one color, so it'doesn't work. I base on standard quakes dataset and need to differ colours based on depth>300 condition. I tried to use lapply but not sure if I do it correctly: lapply(if(coords$depth > 300) 'red' else 'green',htmltools::HTML). Anyways, do you have any idea how to make it possible?

library(shiny)
library(leaflet)
library(dplyr)
library(sf)
library(htmlwidgets)


ui <- fluidPage(
   leafletOutput("map")
)

server <- function(input, output, session) {
   
   coords <- quakes %>%
      sf::st_as_sf(coords = c("long","lat"), crs = 4326)

     output$map <- leaflet::renderLeaflet({
     leaflet::leaflet() %>%         
       leaflet::addTiles() %>%
       leaflet::setView(172.972965,-35.377261, zoom = 4) %>%
       leaflet::addCircleMarkers(
         data = coords,
         stroke = FALSE,
         color = if(coords$depth > 300) 'red' else 'green',
         radius = 6)
   })
}

shinyApp(ui, server)

CodePudding user response:

library(tidyverse)
library(leaflet)

data(quakes)

quakes[1:20, ] %>%
  leaflet() %>%
  addTiles() %>%
  addCircleMarkers(~long, ~lat,
    popup = ~ as.character(mag),
    label = ~ as.character(mag),
    color = ~ ifelse(depth > 300, "red", "green")
  )

enter image description here

  • Related