我希望能够根据用户输入和 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读取!

r - 绘制ggmap时, Shiny 的找不到对象-LMLPHP

但是,当我尝试输入并尝试打印 map 时,我得到:

r - 绘制ggmap时, Shiny 的找不到对象-LMLPHP

我正在尝试代替错误

r - 绘制ggmap时, Shiny 的找不到对象-LMLPHP

任何建议欢迎。

条形图可以从x5读取,但是ggplot不能!

最佳答案

对于ggplot,您不必在其中放置x5 $。
尝试aes(x = long,y = lat,...,data = x5,...

关于r - 绘制ggmap时, Shiny 的找不到对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51844717/

10-12 18:07