R 中的交互式地图使用 leaflet/Shiny
Interactive Map in R using leaflet/Shiny
我想创建一个带有边栏的地图,您可以在其中 select 时间段的范围。这个想法是地图只显示在此期间开业的酒店的标记。我不知道该怎么做,所以我尝试使用 selectInput 代替,因为它对我来说似乎更容易一些。但似乎我仍然无法让它发挥作用。任何指导将不胜感激。
这是示例数据框:
Hotel Year lat long
A 2000 41.886337 -87.628472
B 2005 41.88819 -87.635199
C 2010 41.891113 -87.63301
这是ui.R:
#ui.R
library(shiny)
library(leaflet)
shinyUI(fluidPage(
titlePanel("Hotel Map"),
sidebarLayout(
sidebarPanel(
selectInput("year",
label = "Choose Year:",
choices = c(2000,2005,2010),
selected = 2000
)),
mainPanel (leafletOutput("map","100%",300))
)
))
这是server.R:
library(shiny)
library(leaflet)
source("RStudio\Map-app")
hotels <- read.csv("RStudio\Map-app\ChicagoHotels.csv")
shinyServer(
function(input, output) {
output$map <- renderLeaflet({
df <- hotels[hotels$Year == input$year,]
leaflet() %>%
addTiles() %>%
addCircles(data = df)
})
}
)
首先,您应该了解的是 mainPanel 首先在做什么。主面板不会接收
leafletMap("map","100%",300)
它要求您改为输入:
leafletOutput("map", "100%", 300)
或其他一些相关的传单输出声明。
shiny的设计方式,如果你想输出图形或表格,你需要有你在server.R文件中创建的output$map对象,回到ui.R 并且您的图形将仅根据特定的输出语句输出。
此页面包含大量示例和帮助。
Leaflet link you should really look at, so click me!
感谢您顺便向我介绍传单,这是一个比 googleVis 包的 gvisGeoMap 功能更好的工具。
@InfiniteFlashChess 没错。
Server.R
library(leaflet)
hotels <- read.table(text = "Hotel Year latitude longitude
A 2000 41.886337 -87.628472
B 2005 41.88819 -87.635199
C 2010 41.891113 -87.63301",
header = TRUE)
shinyServer(function(input, output) {
output$map <- renderLeaflet({
df <- hotels[hotels$Year == input$year,]
leaflet() %>%
addTiles() %>%
addMarkers(data = df)
})
})
Ui.R
library(shiny)
library(leaflet)
shinyUI(fluidPage(
titlePanel("Hotel Map"),
sidebarLayout(
sidebarPanel(
selectInput("year",
label = "Choose Year:",
choices = c(2000,2005,2010),
selected = 2000
)),
mainPanel (leafletOutput("map","100%",300))
)
))
我想创建一个带有边栏的地图,您可以在其中 select 时间段的范围。这个想法是地图只显示在此期间开业的酒店的标记。我不知道该怎么做,所以我尝试使用 selectInput 代替,因为它对我来说似乎更容易一些。但似乎我仍然无法让它发挥作用。任何指导将不胜感激。
这是示例数据框:
Hotel Year lat long
A 2000 41.886337 -87.628472
B 2005 41.88819 -87.635199
C 2010 41.891113 -87.63301
这是ui.R:
#ui.R
library(shiny)
library(leaflet)
shinyUI(fluidPage(
titlePanel("Hotel Map"),
sidebarLayout(
sidebarPanel(
selectInput("year",
label = "Choose Year:",
choices = c(2000,2005,2010),
selected = 2000
)),
mainPanel (leafletOutput("map","100%",300))
)
))
这是server.R:
library(shiny)
library(leaflet)
source("RStudio\Map-app")
hotels <- read.csv("RStudio\Map-app\ChicagoHotels.csv")
shinyServer(
function(input, output) {
output$map <- renderLeaflet({
df <- hotels[hotels$Year == input$year,]
leaflet() %>%
addTiles() %>%
addCircles(data = df)
})
}
)
首先,您应该了解的是 mainPanel 首先在做什么。主面板不会接收
leafletMap("map","100%",300)
它要求您改为输入:
leafletOutput("map", "100%", 300)
或其他一些相关的传单输出声明。
shiny的设计方式,如果你想输出图形或表格,你需要有你在server.R文件中创建的output$map对象,回到ui.R 并且您的图形将仅根据特定的输出语句输出。
此页面包含大量示例和帮助。
Leaflet link you should really look at, so click me!
感谢您顺便向我介绍传单,这是一个比 googleVis 包的 gvisGeoMap 功能更好的工具。
@InfiniteFlashChess 没错。
Server.R
library(leaflet)
hotels <- read.table(text = "Hotel Year latitude longitude
A 2000 41.886337 -87.628472
B 2005 41.88819 -87.635199
C 2010 41.891113 -87.63301",
header = TRUE)
shinyServer(function(input, output) {
output$map <- renderLeaflet({
df <- hotels[hotels$Year == input$year,]
leaflet() %>%
addTiles() %>%
addMarkers(data = df)
})
})
Ui.R
library(shiny)
library(leaflet)
shinyUI(fluidPage(
titlePanel("Hotel Map"),
sidebarLayout(
sidebarPanel(
selectInput("year",
label = "Choose Year:",
choices = c(2000,2005,2010),
selected = 2000
)),
mainPanel (leafletOutput("map","100%",300))
)
))