2017-12-16 7 views
1

以下のコードはShinyにグラフのデータを表示させることができません。これは単にデータではなくカラム名を表示するだけです。助言がありますか?ggplot2 ShinyでinputIdを使用していません

データは、正しくプロットされているのではなく、グラフの行に表示されています。私はR Shinyのチートシートの例を試してみましたが、運はありません。

budget_d <- tribble(~opdate, ~r.pd.bdgt, ~r.pt.bdgt, ~r.au.bdgt, 
        ymd("2018-05-31"), 81, 73, 65, 
        ymd("2018-06-11"), 86, 79, 69, 
        ymd("2018-06-30"), 89, 76, 67, 
        ymd("2018-07-21"), 82, 72, 65, 
        ymd("2018-08-01"), 81, 73, 63, 
        ymd("2018-08-08"), 83, 75, 67, 
        ymd("2018-11-17"), 84, 74, 66) 

require(shiny) 
require(tidyverse) 
require(lubridate) 


ui <- fluidPage(
    dateRangeInput(
        inputId = "period", 
        label = "Choose a Period", 
        start = ymd("2018-04-01"), 
        end = ymd("2018-09-01"), 
        min = ymd("2018-01-01"), 
        max = ymd("2018-12-31") 
        ), 
    selectInput(
        inputId = "elements", 
        label = "Select an Element", 
        choices = c("Pd Recovery" = "r.pd.bdgt", 
           "Pt Recovery" = "r.pt.bdgt", 
           "Au Recovery" = "r.au.bdgt") 
    ), 
    plotOutput(
     outputId = "hist" 
    ) 
) 



server <- function(input, output){ 
    output$hist <- renderPlot({ 
     ggplot(budget_d, aes(opdate, input$elements)) + 
        geom_point() + 
        xlim(input$period) 
    }) 
} 



shinyApp(ui = ui, server = server) 
+0

少なくとも2つの理由から、リンク内ではなく質問内の*サンプル*データを提供してください。リンクが死んでしまう可能性があります。この問題は再現性がありません。一部の人々は無害なリンクをクリックして任意のファイルをダウンロードすることを躊躇しています。たとえそれが「明らかに」クリーンで安全なファイルであっても、私たちが怠惰な人(そしておそらく他の回答者も)は受け入れない間接的なレベルです。 – r2evans

+2

良い点。私はあなたの懸念を反映するために質問を編集しました。私は頭を高く評価します。 –

答えて

1

hereを参照してください。 input$elementsは変数で、変数を使用する場合はaesの代わりにaes_stringを使用する必要があります。サンプルデータの使用例:

require(shiny) 
require(tidyverse) 
require(lubridate) 
library(ggplot2) 



ui <- fluidPage(
    selectInput(
    inputId = "elements", 
    label = "Select an Element", 
    choices = colnames(iris) 
), 
    plotOutput(
    outputId = "hist" 
) 
) 



server <- function(input, output){ 
    output$hist <- renderPlot({ 

    # This works. 
    ggplot(iris, aes_string("Sepal.Length", input$elements)) + 
     geom_point() 

    # This does not work. 
    # ggplot(iris, aes(Sepal.Length, input$elements)) + 
    # geom_point() 
    }) 
} 

shinyApp(ui,server) 

+0

Brilliant!ありがとう! –

関連する問題