使用局部变量用aes绘制geom_rect

时间:2013-09-24 09:07:42

标签: r ggplot2 shiny

我正在尝试运行闪亮的并且在其中一个renderPlot中我使用ddply定义了一个数据框,并且因为我使用了该函数的一个输入变量,我需要使用“here”函数:

    Dates<-ddply(rawData.Agg,.(ProdID,LD_TSq),here(summarise),
             FOD=min(Time_Seq),
             FOD_ind=which.min(Time_Seq),
             ...
    )

稍后在函数中我使用这些值来绘制一些ggplots

print(  ggplot(rawData.Agg,aes(Time_Seq,Stores)) + 
  geom_vline(xintercept=as.numeric(as.character(Dates$LD_TSq[1])), linetype="solid",colour="cornflowerblue", size=2 ) +
 ...
)

这样可以正常访问Dates数据帧。但是我想添加一个geom_rect,我使用:

  geom_rect(aes(xmin=Dates$date_5[1], xmax=Dates$date_3[1], ymin=0, ymax=Inf),fill = "aquamarine",alpha=0.01)

我在rstudio终端中得到错误:

Listening on port 8100
Error in eval(expr, envir, enclos) : object 'Dates' not found    

我认为这是由于日期是本地数据框架。我尝试过定义环境,但是无法让它工作,有人能告诉我如何使用它吗?

编辑: 以下是一些应该使用mtcars数据集复制问题的代码。

server.R:

library(shiny)
library(datasets)
library(ggplot2)
library(plyr)
mpgData <- mtcars
shinyServer(function(input, output) {
  output$detailed <- renderPlot({
    Dates<-ddply(mpgData,.(cyl),summarise,
                 disp = ave(disp),
                 hp = ave(hp),
                 wt = ave(wt)
    )
    print(  ggplot(mpgData,aes(disp,hp))+
            geom_point(shape=17,color="black",size=2) +
            geom_rect(aes(xmin=Dates$disp[1], xmax=200, ymin=0, ymax=Inf),fill = "aquamarine",alpha=0.01) 
    )
  })
})

ui.R:

library(shiny)

shinyUI(pageWithSidebar(

  headerPanel("Launch Date"),

  sidebarPanel(    


  ),

  mainPanel(
    h3(textOutput("caption")),
    tabsetPanel(
      tabPanel("Detailed",plotOutput("detailed"))
    )
  )
))

1 个答案:

答案 0 :(得分:2)

您应该移除aes中对geom_rect的来电,因为此处Dates$disp[1]是常量:

print(  ggplot(mpgData,aes(disp,hp))+
        geom_point(shape=17,color="black",size=2) +
        geom_rect(xmin=Dates$disp[1], xmax=200, ymin=0, ymax=Inf,fill = "aquamarine",alpha=0.01) 
)