【问题标题】:shiny cannot find object when plotting ggmap绘制ggmap时闪亮找不到对象
【发布时间】: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


【解决方案1】:

对于 ggplot,您不必将 x5$ 放在那里。 试试 aes(x=long, y=lat, ..., data=x5, ...

【讨论】:

  • 这真的能解决问题吗?当我做ggplot(mtcars, aes(disp,mpg)) + geom_point(aes(x=mtcars$disp,y=mtcars$cyl), data=mtcars) (遭受同样有问题的方法)时,它仍然按预期工作。
  • 成功了,谢谢!删除了 x5$ 的东西,并将对 x5 的引用保留在 aes 之外以使其工作: geom_polygon(aes(x=long, y=lat, group=group,fill=Measure), size=.5,color='黑色', alpha=.5,data=x5) +
  • 奇怪,我也有同样的想法,但我检查了 ggplot() + geom_point(aes(x=iris$Petal.Width, y=iris$Petal.Length), data=iris) 是否有效。
  • @r2evans 您还需要删除 geom_point() 语句中的那些。它会将您的 x 视为变量。 disp 是,但 mtcars$disp 不是。希望这能回答你的问题
  • @StéphaneLaurent 有趣。您的环境中有 iris 数据集吗?
猜你喜欢
  • 2016-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-21
  • 2015-04-13
  • 1970-01-01
  • 1970-01-01
  • 2017-06-12
相关资源
最近更新 更多