【问题标题】:popupGraph - R, Leaflet: Why are my popup graphs blank?popupGraph - R,Leaflet:为什么我的弹出图是空白的?
【发布时间】:2020-06-23 21:40:03
【问题描述】:

R 中的映射 - 闪亮,传单。

一直试图弄清楚如何在我的地图中将我的线图(库 - ggplot2)显示为弹出窗口。 首先,我使用 popupGraph (leafpop) 来执行此操作。基本上想显示线图,其中 x 是时间,y 是新的 covid 案例。当用户点击一个县时,弹出窗口应该只显示所点击县的图表。

弹出窗口有效,但它们是空白的,它们不显示我的图表。不知道我做错了什么。我一直在查看其他 stackOverflow 问题来帮助我解决我的问题(主要是:Control the size of popupGraph() from leaflet in r shinyR 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 问题的任何建议或资源?

【问题讨论】:

    标签: r leaflet popup


    【解决方案1】:

    有几件事,您选择的数据,即 subset_county 是一个反应性项目,它只会根据用户使用 UI 进行选择的方式和时间来获取数据。在您的情况下,当您引用它来绘制您可能想要使用的图表时,subset_county()。我注意到的另一件事是,在传单调用中,您有 data=counties,实际上它应该是 data = subset_county(),因为您只需要所选项目的图表。您可能需要使用观察者,因为我认为您正在尝试仅显示所选县的图表。

    请参阅https://rstudio.github.io/leaflet/shiny.html,了解有关闪亮和传单的非常介绍

    【讨论】:

    • 非常感谢 Q007,我会研究这些变化!!!!
    猜你喜欢
    • 2015-04-01
    • 1970-01-01
    • 2012-12-08
    • 2017-03-04
    • 2011-09-12
    • 2014-07-20
    • 2015-08-18
    • 2010-10-26
    • 2017-07-06
    相关资源
    最近更新 更多