2013-09-24 3 views
1

Я пытаюсь запустить блестящий и в пределах одного из renderPlot я определяю кадр данных с помощью ddply, и поскольку я использую одну из входных переменных функции, мне нужно использовать " здесь»функция:Задание geom_rect с помощью aes с использованием локальных переменных

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) + 
... 
) 

и это работает, и обращающийся даты dataframe штрафа. Тем не менее, я хотел бы добавить 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  

Я думаю, что это из-за даты, которые местный кадр данных. Я пробовал играть с определением среды, но не могу заставить ее работать, может ли кто-нибудь показать мне, как это работает?

EDIT: Вот несколько примеров, которые должны повторить проблему с использованием набора данных 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")) 
    ) 
) 
)) 
+0

Это трудно ответить без всего кода. Если 'Dates' находится в вашей' geom_vline', нет причин, чтобы это не было в 'geom_rect' ... – juba

+0

@juba Теперь я добавил пример кода, который должен повторить проблему. – gabrown86

ответ

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) 
)