Это мой первый вопрос, поэтому прошу прощения, если все не так, но я застрял в проблеме, и мне действительно нужна помощь, пожалуйста.
Я пытаюсь создать блестящее приложение, которое позволит вам выбрать вид из выпадающего меню, тем самым изменив цвет полигонов страны на карте, 1 цвет для присутствия и другой для отсутствия. Я создал объект sf с данными шейп-файла и объединил его с фреймом данных отсутствия присутствия (1 + 0 соответственно), намерение состоит в том, что выбор этого вида изменит input $ SppSelect, выбрав другой столбец в объединенном объекте sf, а затем это приведет к тому, что моя карта листовок будет перерисована с появлением нового вида.
Чтобы раскрасить карту, я намеревался назначить входную переменную моего вида другой переменной: sppcol <- reactive({input$SppSel})
, а затем использовать Botpal <- reactive({colorFactor(viridis(2), BotCon$sppcol())})
, чтобы создать реактивную палитру. Затем я бы использовал fillColor = ~Botpal(Botcon$sspcol())
, чтобы изменить цвет многоугольников.
Я не уверен, смогу ли я создать репрезент, но я попытаюсь проиллюстрировать, как приложение должно работать. Palms = csv файл со всеми видами, встречающимися рядом со страной, в:
(китай: caryota mitis)
(китай: caryota no)
(Бутан: caryota mitis ).
BotCon - это шейп-файл ботанических стран, с которым я работаю. :
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
selectInput(inputId = "SppSel",
label = "Species Selection",
choices = paste(Palms$SpecName)),
),
mainPanel(
leafletOutput("mymap", height=600)
)))
server <- function(input, output) {
PresAb <- create.matrix(Palms, tax.name = "SpecName", locality = "Area_code_L3")
PresAb.df <- as.data.frame(t(PresAb))
PresAb.dfnamed <- cbind(LEVEL3_COD = rownames(PresAb.df), PresAb.df)
jointdataset <- merge(BotCon, PresAb.dfnamed, by = 'LEVEL3_COD', all.y=TRUE)
sppcol <- reactive({input$SppSel})
Botpal <- reactive({colorFactor(viridis(2), jointdataset$sppcol())})
output$mymap <- renderLeaflet({
leaflet() %>%
addTiles() %>%
addPolygons(data=jointdataset,
stroke = TRUE,smoothFactor = 0.3, weight = 1, fillOpacity = 0.5,
fillColor = ~Botpal(jointdataset$"caryota mitis")
}) }
shinyApp(ui = ui, server = server)
Поэтому мой вопрос; Как я могу использовать входные данные для выбора вида, чтобы выбрать другой столбец объединенного набора данных, который я создал, и раскрасить полигоны моей карты, используя единицы и нули, присутствующие в этом столбце, пожалуйста?
(очень извините за макет, я тоже в значительной степени самоучка для всего этого)