【发布时间】:2020-06-23 21:40:03
【问题描述】:
R 中的映射 - 闪亮,传单。
一直试图弄清楚如何在我的地图中将我的线图(库 - ggplot2)显示为弹出窗口。 首先,我使用 popupGraph (leafpop) 来执行此操作。基本上想显示线图,其中 x 是时间,y 是新的 covid 案例。当用户点击一个县时,弹出窗口应该只显示所点击县的图表。
弹出窗口有效,但它们是空白的,它们不显示我的图表。不知道我做错了什么。我一直在查看其他 stackOverflow 问题来帮助我解决我的问题(主要是:Control the size of popupGraph() from leaflet in r shiny、R Leaflet PopupGraph - addPopupGraphs on map_marker_click) 但是我画的是一个空白,这个功能的网上资源好像也不是很多。关于为什么我的图表没有绘制的任何建议或想法?我不知道这是一个简单的语法问题,还是我完全错误地接近函数。
这是我的美国县变量数据,“counties1”和这些县的 covid-19 病例,“df”: (为可复制而编辑——阿拉巴马州奥陶加县样本)
##* COVID-19 DATA:
head(df)
FIPS Admin2 Province_State Lat Long_ date value
637 1001 Autauga-AL AL 32.53953 -86.64408 2020-01-22 0
638 1001 Autauga-AL AL 32.53953 -86.64408 2020-01-23 1
639 1001 Autauga-AL AL 32.53953 -86.64408 2020-01-24 2
640 1001 Autauga-AL AL 32.53953 -86.64408 2020-01-25 3
641 1001 Autauga-AL AL 32.53953 -86.64408 2020-01-26 4
642 1001 Autauga-AL AL 32.53953 -86.64408 2020-01-27 5
>
dput(head(df))
structure(list(
FIPS = c(1001L, 1001L, 1001L, 1001L, 1001L, 1001L),
Admin2 = c("Autauga-AL", "Autauga-AL", "Autauga-AL", "Autauga-AL", "Autauga-AL", "Autauga-AL"),
Province_State = c("AL", "AL", "AL", "AL", "AL", "AL"),
Lat = c(32.53952745, 32.53952745, 32.53952745,
32.53952745, 32.53952745, 32.53952745),
Long_ = c(-86.64408227, -86.64408227, -86.64408227, -86.64408227, -86.64408227, -86.64408227),
date = structure(c(18283, 18284, 18285, 18286, 18287, 18288), class = "Date"),
value = c(0, 1, 2, 3, 4, 5)),
row.names = 637:642, class = "data.frame")
###COUNTY (polygons) DATA:
> head(counties1)
STATEFP COUNTYFP GEOID NAME ALAND AWATER INTPTLAT
1 01 001 01001 Autauga-AL 1539614693 25744269 +32.5322367
INTPTLON STATE_NAME
0 -086.6464395 AL
> dput(head(counties1))
structure(list(
STATEFP = c("01"),
COUNTYFP = c("001"),
GEOID = c("01001"),
NAME = c("Autauga-AL"),
ALAND = c("1539614693"),
AWATER = c(""25744269""),
INTPTLAT = c("+32.5322367"),
INTPTLON = c("-086.6464395"),
STATE_NAME = c("AL"),
row.names = 0:1, class = "data.frame")
这是我的用户界面:
library(shiny)
library(shinydashboard)
library(leafpop)
library(sf)
library(tidyverse)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(leafletOutput("map"),
)
这是我的服务器,我认为我的问题在于名为“subset_county”的函数。我已经评论过了 展示我认为我正在努力实现的目标。抱歉,我才用 R Shiny 几个月,还没有完全掌握如何创建响应式函数:
server <- function(session, input, output)
### subset counties based on click event, maybe?
subset_county <- reactive({
click_it <- input$map_shape_click ##click on county polygon to create reactive click function...
data <- df[df$Admin2 == click_it$NAME,] ## … where data from df is pulled - when the column for df$Admin2 is the same as the name of the clicked polygon (*Thanks @akrun for the edit on brackets over parentheses.)
ggplot(data= data(),
aes(x= date, y = value)) + geom_line()
})
##### or should the plot be rendered outside the subset_county function, in renderPlot()?
# output$plot <-renderPlot(
# plot <- ggplot(data= subset_county(),
# aes(x= date, y = value)) + geom_line()
# )
############ DISPLAY MAP
output$map <- renderLeaflet({
leaflet() %>%
addProviderTiles(providers$CartoDB.DarkMatter) %>%
addPolygons(data=counties,
color = "black",
weight = 0.1,
opacity = 1.0,
fillOpacity = 0.15,
fillColor = "transparent",
group= "counties",
popup = popupGraph(subset_county),
layerId = ~counties1$GEOID
) %>%
addLayersControl( baseGroups = c("CartoDB.DarkMatter"),
overlayGroups = c("counties"),
})
}
########################################################################################
shinyApp(ui = ui, server = server)
我希望我的数据足够漂亮!关于如何解决我的 popupGraph 问题的任何建议或资源?
【问题讨论】: