2017-07-13 11 views
0

光沢のあるアプリにアップロードされたデータセットの変数を選択して、散布図を描画する光沢のあるアプリを作成します。 ggplotとplotlyを使ってプロットを作成したい。私が試みたコードは以下の通りです。しかし、私のアプリはプロットを与えません。ggplotを使用して散布図を描画するShinyAppを作成

library(shiny) 
library(datasets) 
library(plotly) 

ui <- shinyUI(fluidPage(
    titlePanel("Column Plot"), 
    tabsetPanel(
     tabPanel("Upload File", 
         titlePanel("Uploading Files"), 
         sidebarLayout(
          sidebarPanel(
           fileInput('file1', 'Choose CSV File', 
                accept=c('text/csv', 
                    'text/comma-separated-values,text/plain', 
                    '.csv')), 


           tags$br(), 
           checkboxInput('header', 'Header', TRUE), 
           radioButtons('sep', 'Separator', 
                 c(Comma=',', 
                  Semicolon=';', 
                  Tab='\t'), 
                 ','), 
           radioButtons('quote', 'Quote', 
                 c(None='', 
                  'Double Quote'='"', 
                  'Single Quote'="'"), 
                 '"') 

          ), 
          mainPanel(
           tableOutput('contents') 
          ) 
         ) 
     ), 
     tabPanel("First Type", 
         pageWithSidebar(
          headerPanel('My First Plot'), 
          sidebarPanel(

           # "Empty inputs" - they will be updated after the data is uploaded 
           selectInput('xcol', 'X Variable', ""), 
           selectInput('ycol', 'Y Variable', "", selected = "") 

          ), 
          mainPanel(
           plotOutput('MyPlot') 
          ) 
         ) 
     ) 

    ) 
) 
) 

server <- function(input, output, session) { 

    data <- reactive({ 
     req(input$file1) 

     inFile <- input$file1 

     df <- read.csv(inFile$datapath, header = input$header, sep = input$sep, 
            quote = input$quote) 


     updateSelectInput(session, inputId = 'xcol', label = 'X Variable', 
              choices = names(df), selected = names(df)) 
     updateSelectInput(session, inputId = 'ycol', label = 'Y Variable', 
              choices = names(df), selected = names(df)[2]) 

     return(df) 
    }) 

    output$contents <- renderTable({ 
     data() 
    }) 

    output$trendPlot <- renderPlotly({ 

     # build graph with ggplot syntax 
     p <- ggplot(data(), aes_string(x = input$xcol, y = input$ycol)) + geom_point() 

     ggplotly(p) 

    }) 
} 

shinyApp(ui, server) 

上記のコードでは、次のセクションは機能していないようです。

output$trendPlot <- renderPlotly({ 

      # build graph with ggplot syntax 
      p <- ggplot(data(), aes_string(x = input$xcol, y = input$ycol)) + geom_point() 

      ggplotly(p) 

     }) 
+0

まず、あなたのコードのどの部分を絞り込むしようとしている場合は、より良い助けを得るでしょう動作していないと特定の問題は何ですか? –

答えて

1

実際に問題がoutput$trendPlotではなくmainPanel(...)

1ではありません。密接に見て、mainPanelに、あなたはplotOutput('MyPlot')を呼んでいるが、、output$trendPlotで存在するのみプロットをoutput$MyPlot存在しません。

2:output$trendPlot <- renderPlotly({...})trendPlotの戻り値の型はrenderPlotlyですが、plotOutputmainで呼ばれています。修正プログラムは、これを固定した後

mainPanel(
    plotlyOutput('trendPlot') 
) 

で次のように

ので、出力は次のようになります。

snap1

関連する問題