2016-08-10 1 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

그래프를 슬라이더처럼 동작 시키시겠습니까? 나는 곧바로 앞으로 나아갈 길은 없다고 생각한다. (나는 당신이 그것을 스스로 프로그래밍해야한다고 생각한다.) Probaly with javascript 그러나 나는 전문가가 아니다. – Alex

+0

예 범위 위젯과 같은 것을 가지고 있지만 3 가지 색상과 몇 가지 추가 레이블이 있습니다. – Ignacio

관련 문제