2016-09-26 8 views
0

私はいくつかの予測グラフを作成するために光沢のあるアプリを使用しています。しかし、私はいくつかのグラフを表示するだけの問題があります。私は現在、アプリケーションのサーバー部分に次のコードを使用しています。光沢のあるアプリ、一部のグラフのみを表示

server <- function(input, output) { 

output$graph <- renderPlot({ 
     row.number <- which(grepl(input$n1, Data$Kontotal)) 
     name <- Data [row.number, -(1:3)] 
     name <- t(name) 
     name <- ts(name, frequency=12, start=c(2007,1)) 
     n.row <- nrow(name) 

     en<-max(time(name)) 
     ds<-as.data.frame(window(name,end=en)) 
     names(ds)<-'obs' 
     ds$date<-as.Date(time(window(name,end=en)))  


     p1a <- ggplot(data=ds,aes(x=date,y=obs)) 
     p1a <- p1a+geom_line(col='red') 
     p1a <- p1a+scale_x_date(name='',breaks='1 year',minor_breaks='1 month',labels=date_format("%b-%y"),expand=c(0,0)) 
     p1a <- p1a+scale_y_continuous(name='mio.kr') 
     p1a <- p1a + theme_bw() + 
      theme(panel.border = element_blank(), 
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(), 
        axis.line = element_line(colour = "black")) }) 


output$graph2 <- renderPlot({ 

    if (input$n3 == "HW") { 
      row.number <- which(grepl(input$n1, Data$Kontotal)) 
      name <- Data [row.number, -(1:3)] 
      name <- t(name) 
      name <- ts(name, frequency=12, start=c(2007,1)) 
      n.row <- nrow(name) 


      fit <- auto.arima (name) 
      fcast <- forecast(fit, input$n2) 



      ### Plotting 

      data.pred <- forc.ggplot (name, fcast) 




      p1a <- ggplot(data=data.pred,aes(x=date,y=obs)) 
      p1a <- p1a+geom_line(col='red') 
      p1a <- p1a+geom_line(aes(y=fitted),col='blue') 
      p1a <- p1a+geom_line(aes(y=forecast))+geom_ribbon(aes(ymin=lo95,ymax=hi95),alpha=.25) 
      p1a <- p1a+scale_x_date(name='',breaks='1 year',minor_breaks='1 month',labels=date_format("%b-%y"),expand=c(0,0)) 
      p1a <- p1a+scale_y_continuous(name='mio.kr') 
      p1a <- p1a + theme_bw() + 
       theme(panel.border = element_blank(), 
         panel.grid.major = element_blank(), 
         panel.grid.minor = element_blank(), 
         axis.line = element_line(colour = "black")) 
      p1a 


     } 

    if (input$n3 == "arima") { 
     row.number <- which(grepl(input$n1, Data$Kontotal)) 
     name <- Data [row.number, -(1:3)] 
     name <- t(name) 
     name <- ts(name, frequency=12, start=c(2007,1)) 
     n.row <- nrow(name) 


     fit <- auto.arima (name) 
     fcast <- forecast(fit, input$n2) 



     ### Plotting 

     data.pred <- forc.ggplot (name, fcast) 




     p1a <- ggplot(data=data.pred,aes(x=date,y=obs)) 
     p1a <- p1a+geom_line(col='red') 
     p1a <- p1a+geom_line(aes(y=fitted),col='blue') 
     p1a <- p1a+geom_line(aes(y=forecast))+geom_ribbon(aes(ymin=lo95,ymax=hi95),alpha=.25) 
     p1a <- p1a+scale_x_date(name='',breaks='1 year',minor_breaks='1 month',labels=date_format("%b-%y"),expand=c(0,0)) 
     p1a <- p1a+scale_y_continuous(name='mio.kr') 
     p1a <- p1a + theme_bw() + 
      theme(panel.border = element_blank(), 
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(), 
        axis.line = element_line(colour = "black")) 
     p1a 


    } 


}) 

}

問題は、ARIMAグラフが表示されていることです。 注:ここに掲載されたコードでは、コードのHW部分のモデルが変更されているため、ARIMA部分(モデルを含む)と同じですが、何かが間違っていたets関数(HWモデルの推定に使用した関数)。

HWの場合はグラフが表示されていたはずの空白が残っていますが、ARIMAモデルの右グラフが表示されます。

誰でも同様のものを試しましたか?

+2

'ui.r'を投稿してください –

答えて

0

ブロックifの外側のrenderPlot()チャンクの末尾にp1aを置きます。 renderPlotチャンクの最後の表現をプロットしようとします。 input$n3 =="HW"の場合は、プロットオブジェクトp1aを生成しますが、FALSEの次のifの条件を評価し続けるので、何もplotOutput()に渡されません。

ifの代わりにswitch()を使用します。 switch()は、一致した要素の式のみを評価します。

関連する問題