【发布时间】:2019-01-21 12:07:45
【问题描述】:
我希望能够根据用户输入和地图的颜色区域对数据框进行子集化。
我可以设置 RShiny 以读取数据帧并成功制作区域和指标的直方图,但是当我尝试包含地图的代码时,我收到一条错误消息,指出 "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),它确实如此,就像x5 的值的条形图。因此,它可以从对象 x5 中读取!
但是,当我尝试使用线路并尝试打印地图时,我得到:
我正在尝试代替错误
欢迎提出任何建议。
barplot 可以从 x5 读取,但 ggplot 不能!
【问题讨论】:
-
您是否有理由在绘图命令中同时引用
x5$long(et al) 和data=x5?对我来说似乎是多余的。 @wxxyyyzz 似乎认为这是您问题的根源,但由于您的问题不可重现,因此无法确定。
标签: r object ggplot2 error-handling shiny