我希望能够根据用户输入和 map 的颜色区域对数据框进行子集化。
我可以设置RShiny来读取数据帧并成功制作区域和指标的直方图,但是当我尝试包含 map 代码时,我收到一条错误消息,说"Error: object 'x5' not found".
x5是我从中读取数据的子集在。
我的代码如下:
library(shiny)
library(xlsx)
library(rgdal)
library(rgeos)
library(sp)
library(ggplot2)
library(ggmap)
require(RgoogleMaps)
x3=readRDS('LSOAData.RDS') #data frame, 150k x 110
ui <- shinyUI(fluidPage(
titlePanel('LSOA Maps of London'),
column(3,
selectInput('borough','Borough',
choices = unique(x3$LA_NAME)),
selectInput('measure','Metric to View',
choices = colnames(x3[c(10:17)]))
),
column(3,plotOutput('hist')),
column(6,plotOutput('LSOAMap'))
))
server <- shinyServer(function(input, output){
output$hist <- renderPlot({
hist(x3[x3$LA_NAME==input$borough,input$measure],main=input$borough,ylab='Freq',xlab=input$measure)
})
output$LSOAMap <- renderPlot({
x4=x3[x3$LA_NAME==input$borough,]
pp=x4[,c('long','lat')]
RegionOfInterest <- get_map(location = c(lon = mean(pp$long), lat = mean(pp$lat)),
zoom = 12,
maptype = "roadmap", scale = 2)
x5=droplevels(x4)
colnum=which(colnames(x3)=='IMD Score')
#plot(colnum)
x5$Measure=cut(x5[,colnum],3)
# barplot(table(x5$Measure))
#colour code each LSOA
RegionOfInterestMap=ggmap(RegionOfInterest) +
geom_polygon(aes(x=x5$long, y=x5$lat, group=group,fill=x5$Measure),
size=.5,color='black', data=x5, alpha=.5) +
scale_fill_manual(values=c('green','yellow','red3'),
labels=c('Low','Medium','High'),
name='Value')+
ggtitle(paste0(input$measure,' in ',input$borough,' by LSOA'))+
theme(axis.ticks.y = element_blank(),
axis.ticks.x = element_blank(),
axis.text.y = element_blank(),
axis.text.x = element_blank())
RegionOfInterestMap
})
})
shinyApp(ui = ui, server = server)
注释掉的
# barplot(table(x5$Measure))
行(第45行)我用来确保到那时为止一切正常(其余注释掉了,行46-58,即未绘制ggmap),并且这样做,来自5倍因此,它可以从对象x5读取!但是,当我尝试输入并尝试打印 map 时,我得到:
我正在尝试代替错误
任何建议欢迎。
条形图可以从x5读取,但是ggplot不能!
最佳答案
对于ggplot,您不必在其中放置x5 $。
尝试aes(x = long,y = lat,...,data = x5,...
关于r - 绘制ggmap时, Shiny 的找不到对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51844717/