编写Leaflet Shiny App的代码以绘制热图

在以前的文章中,我已经演示了如何使用例如在R中创建热图。 deckgl,ggmap和传单。我还概述了一些适用于可视化R中空间数据的软件包。 这篇文章提供了一个简短的编码示例,该示例说明了如何在R中编写小型Shiny App,并实现了Leaflet包,以可视化Leaflet地图图块上的热图。 的代码如下:

#加载所需的软件包
library(shiny)
library(leaflet)
library(leaflet.extras)
library(jsonlite)

# 图形用户界面
ui <- fluidPage(
  titlePanel("This is a simple visualization Shiny-App"),
  p("Please upload your input in a csv file"),
  p("The columns must contain a) longitude, b) latitude, c) observation intensity score or count for each location"),
  fileInput(inputId="input_file",label="Please upload input data",placeholder=""),
  checkboxInput(inputId="input_header",label="Does your .csv-file have headers?",value=TRUE),
  leafletOutput(outputId = "map_result"),
  p(""),
  actionButton(inputId="input_button",label="Visualize")
)

# 服务器
server <- function(input,output){
  output$map_result <- renderLeaflet({
    #号召性用语按钮
    input$input_button
    
    #读取和处理输入数据
    isolate({
      data_file <- req(input$input_file)
      if(is.null(data)){
        return(NULL)
      }else{
        data <- read.csv(file=data_file$datapath,header=input$input_header)
      }

      #可视化输出数据
      leaflet() %>% 
        addProviderTiles(provider=providers$Hydda) %>%
        setView(lng= mean(data[,1]), lat=mean(data[,2]), zoom=6) %>%
        addHeatmap(lng =data[,1] , lat=data[,2] , intensity=data[,3])
    })
  })
}


# 应用程序
shinyApp(ui=ui,
         server=server)

该应用程序请求将csv文件作为数据源。对于要由热图绘制考虑的每个位置,此csv文件必须在列中包含经度和纬度数据。此外,csv文件必须包含观察值。在下面,您可以看到示例性的屏幕截图:

Leave a Reply

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Close

功能