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")
)

