2016-05-02 9 views
10

Shinyで正しく描画される単純な折れ線グラフを作成しています。selectlyputに基づいてグラフのy変数を変更する

私はデータセットに現れるように書かれた2つの異なる小節の名前でselectInputを追加しました。私はそれに応じて変数を変更したいと思います。

p <- plot_ly(data = LineChartData(), x= Calendar.Month, y = input$Measure, type = "line", group = Calendar.Year, col = Calendar.Year) 

残念ながら、グラフはただ1つの点でレンダリングされます。それは入力$ Measureを取っておらず、私のデータセットのそのフィールドを見つけていません。

ggplotを使用すると、私のaesをaes_stringに切り替えることができます。プロットで同様のソリューションがありますか?

編集:ここui.Rは

#ui.R 

shinyUI(
    fluidPage(
    titlePanel("Inbound Intermediary Performance"), 

    sidebarLayout(
    sidebarPanel(
    h4("Parameters"), 
    br(), 
    selectInput("Measure", "Measure", c("Var1","Var2")) 
    ), 
    mainPanel(

     plotlyOutput("lineChart") 

    ) 

) 

     ) 

) 

上記の例ではserver.R

#server.R 
library(plotly) 
library(shiny) 
library(ggplot2) 





#Create data 
data <- data.frame(Month = c(1,2,3,4,5,6,7,8,9,10,11,12), Var1 = c(36,33,30,27,24,21,18,15,12,9,6,3), Var2 = c(4,8,12,16,20,24,28,32,36,40,44,48)) 



shinyServer(function(input, output) { 


    #Create plot 

    output$lineChart <- renderPlotly({ 

    #using ggplot 
    p <- ggplot(data=data, aes_string(x='Month', y = input$Measure)) +geom_line(size = 1.5) + theme_minimal() 
    ggplotly(p) 



    #Using PLotly 
    #p <- plot_ly(data = data, x= Month, y = input$Measure, type = "line") 

    }) 

}) 

が、私はスイッチまでの私のドロップを使用することができ、ファイルのいくつかの再現性のあるコードをここで

ですVar1とVar2の間。私のプロットはそれに応じて変わる。このコードではggplotを使用し、aes_string関数を使用して入力します。これは、ggplotly関数を使用してプロット対話プロットに変換されます。

これをネイティブにプロットできる方法はありますか?

+0

してくださいそれは再現可能です。 – MLavoie

+2

機能している小さなアプリケーションとサンプルデータ(およびリアクティブコード?あなたはそのような入力値を使用することはできません。 – Gopala

答えて

-1

単純にあなたのy変数としてdata[ ,input$Measure]を使用します。

p <- plot_ly(data = data, x= Month, y = data[ ,input$Measure], type = "line") 
11

使用ベース::取得()関数:

p <- plot_ly(data = data, x = ~Month, y = ~get(input$Measure), type = "line") 

または同じggplot使用:

p <- ggplot(data = data, aes(x = Month, y = get(input$Measure))) + 
geom_line(size = 1.5) + 
theme_minimal() 
ggplotly(p) 
関連する問題