2016-08-10 3 views
2

shiny + ggplot2、ggvisなどでインタラクティブなグラフを作成することはできますか?3色のセグメントでインタラクティブな線を作成しますか?

enter image description here

アイデアは、ユーザが50%のカットオフまたは75%のカットオフを移動した場合の色が調整されると、セグメントの名前は各セグメントの中央に再調整することです。

+1

関連性のあるものですか? http://stackoverflow.com/questions/20952333/constrain-multiple-sliderinput-in-shiny-to-sum-to-100または範囲を使用する - http://shiny.rstudio.com/gallery/slider-bar-and -slider-range.html – zx8754

答えて

2

私は本当にあなたがここにほしいと思っていないので、わずか2セグメントの最初の推測です。

library(shiny) 
library(ggplot2) 
ui <- shinyUI(fluidPage(

    sidebarLayout(
     sidebarPanel(
     sliderInput("cutoff", 
        "cutoff", 
        min = 0.01, 
        max = 1, 
        step = 0.01, 
        value = 0.5) 
    ), 

     mainPanel(
     plotOutput("plot") 
    ) 
    ) 
)) 


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

    output$plot <- renderPlot({ 
    df <- data.frame(x = seq(0.01, 1, 0.01), y = seq(0.01, 1, 0.01), 
         group = c(rep("a", round(input$cutoff * 100)), 
           rep("b", round(((1-input$cutoff) * 100))) 
           ) 
        ) 
    labelPos <- data.frame(pos = c(input$cutoff - input$cutoff/2, 
            (input$cutoff + (1 - input$cutoff)/2) 
            ), 
          label = c("a", "b") 
          ) 

    ggplot()+ 
     geom_ribbon(data = df, aes(x=x, ymin = -0.2, ymax = 0.2, fill = group), show.legend = FALSE) + 
     geom_label(data = labelPos, aes(x = pos, y = 0.3, label = label)) + 
     coord_cartesian(ylim = c(-1,1)) + 
     theme(line = element_blank(), 
       text = element_blank(), 
       line = element_blank(), 
       title = element_blank() 
      ) 

    }) 
}) 


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

ありがとう、これは私が考えられる解決策を考えるのに役立ちます。私が望むのは3つのセグメントと、グラフをクリックして3つのセグメントを定義する2つのカットオフを移動する機能です。 – Ignacio

+0

グラフをスライダのように動作させたいのですか?私はまっすぐ進む道があるとは思わない(つまり、あなたはそれを自分自身でプログラムしなければならないと思う.Javascriptで暴走するが、私は専門家ではない)。 – Alex

+0

はい、私は、範囲のウィジェットのようなものを念頭に置いていますが、3色といくつかの余分なラベルがあります。 – Ignacio

関連する問題