2017-07-25 15 views
1

Shinyを使用して小さなアプリケーションを作成しようとしています。以下は私が作成しようとしているデータフレームです。Shiny Appでグラフが表示されないR

data<-data.frame(state=c('AZ','VA','CA','AZ','VA','CA'), city=c('Phoenix','Arlington','SantaClara','Mesa','Richmond','SF'), 
         avg=c(10,15,16,13,14,14), date=c('01/09/2017','01/10/2017','01/11/2017','02/09/2017','02/10/2017','02/10/2017'),stringsAsFactors = FALSE) 

だから、私は、日付(x軸)とAVG(y軸)とのグラフを作成しようとしています。したがって、このグラフは州のドロップダウンリストからの選択に基づいて変更する必要があります。たとえば、特定の選択された州については、その州の(他のドロップダウンで)都市を表示する必要があります。以下は

は私のコードです:

library(shiny) 
library(ggplot2) 
library(plotly) 

statelist<-as.list(data$state) 
citylist<-as.list(data$city) 
ui <- basicPage(
    # plotOutput("plot1", click = "plot_click"), 
    # verbatimTextOutput("info") 
    sidebarPanel(
    selectInput("plot1", label=h3("Select State"), choices = statelist), 
    selectInput("plot2", label=h3("Select City"), choices = citylist) 
), 
    plotOutput(outputId="plot") 
), 

server <- function(input, output, session) { 
    observe(
    { 
     state <- input$plot1 
     updateSelectInput(session, "plot2", choices = data$city[data$state == state]) 
    } 
), 
    output$plot<-renderPlot({ 
    ggplot(data[data$city == input$plot2 & 
        data$state == input$plot1],aes(date,avg)) 
    +geom_line() 
    }) 
} 

shinyApp(ui, server) 

ドロップダウンは完全に働いたが、グラフを取得されていません。

ありがとうございます!

答えて

1

私はあなたのコードにいくつかのマイナーな修正をした:

  • いくつかのコンマは、彼らがすべきではない場所にありました:UIコンストラクタの後、および観察コンストラクタの後。
  • 私はあなたのobserveEvent
  • であることを観察し、編集data[data$city == input$plot2 & data$state == input$plot1,]
  • で行方不明カンマがあったサンプルデータは非常に限られているので、私は、それが実際に変化することを示すためにプロットを修正。


library(shiny) 
library(ggplot2) 
library(plotly) 

data<-data.frame(state=c('AZ','VA','CA','AZ','VA','CA'), city=c('Phoenix','Arlington','SantaClara','Mesa','Richmond','SF'), 
       avg=c(10,15,16,13,14,14), Date=c('01/09/2017','01/10/2017','01/11/2017','02/09/2017','02/10/2017','02/10/2017'),stringsAsFactors = FALSE) 

statelist<-unique(data$state) 
citylist<-unique(data$city) 
ui <- basicPage(
    # plotOutput("plot1", click = "plot_click"), 
    # verbatimTextOutput("info") 
    sidebarPanel(
    selectInput("plot1", label=h3("Select State"), choices = statelist), 
    selectInput("plot2", label=h3("Select City"), choices = citylist) 
), 
    plotOutput(outputId="plot") 
) 

server <- function(input, output, session) { 
    observeEvent(input$plot1, 
    { 
     state <- input$plot1 
     updateSelectInput(session, "plot2", choices = data$city[data$state == state]) 
    } 
) 

    output$plot<-renderPlot({ 
    data = data[data$city == input$plot2 & 
      data$state == input$plot1,] 
     ggplot(data,aes(Date,avg)) + geom_point(size=5) + ggtitle(paste0(input$plot1," - ",input$plot2)) 

    }) 
} 

shinyApp(ui, server) 
+0

おかげフロリアン。月/年をy軸、棒グラフまたは折れ線グラフにしたい。あなたはそれを助けることができますか? – Kaushik

+1

それは新しい質問のようです。 Stack Overflowに関する新しい質問としてそれを投稿することを検討してください。 – Florian

関連する問題