2017-09-19 15 views
4

私はを使用しています。私は、1つのポイントを選択したり、ブラッシングで複数のポイントを選択できるようにする必要があります。私は両方の選択肢が並行して存在するようにしたい。ユーザは、ある点をクリックし、いくつかの点を選択することができ、それらの情報の両方を記録すべきである。プロットでは、ローソクの選択とクリックされたポイントの両方に関する情報をどのように保持しますか?

私が問題を抱えているのは、ポイントをクリックすると、ラッソの選択がリセットされるということです。しかし逆は真ではありません。私が選択してポイントをクリックすると、両方が保持されます。

library(shiny) 
library(plotly) 

ui <- fluidPage(
    plotlyOutput("plot"), 
    verbatimTextOutput("click"), 
    verbatimTextOutput("brush") 
) 

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

    nms <- row.names(mtcars) 

    output$plot <- renderPlotly({ 
    p <- ggplot(mtcars, aes(x = mpg, y = wt, key = nms)) + geom_point() 
    ggplotly(p) %>% layout(dragmode = "lasso") 
    }) 

    output$click <- renderPrint({ 
    d <- event_data("plotly_click") 
    if (!is.null(d)) d 
    }) 

    output$brush <- renderPrint({ 
    d <- event_data("plotly_selected") 
    if (!is.null(d)) d 
    }) 

} 

shinyApp(ui, server) 

再現するために:

はここ

この問題のGIFは、ここに私のコードですだ

  • シングルポイント
  • をクリックして投げ縄選択を行います
  • どちらも、あなたがオブジェクトにevent_dataを渡すと今投げ縄選択情報は
  • が再び投げ縄選択を行いなくなって、両者が再び
+0

、何がどこにもつながりません、あなたはggplot2のDEV版をインストールしてみてくださいましたか? – amrrs

+0

それは私のためにうまく動作します。プラットフォーム:x86_64-w64-mingw32/x64(64ビット)、Windows> = 8 x64(ビルド9200)、plotly_4(Windows 7以上) .5.6 ggplot2_2.2.1 shiny_1.0.5 – GyD

+0

クリックとブラシの情報が同じボックスにあれば気になるでしょうか?常にクリック/ブラシの列を追加できますか?私はクリックとブラシのevent_dataを同じrenderPrintに入れ、1つのフレームとして渡すことでこれを実現しました – KGee

答えて

0

表示されている現在

  • 表示されている別のポイント
  • をクリックしますrenderPrint()機能の外でこれは動作するはずです。あなたはまた、以下の強調表示オプションの行を削除した場合の結果をクリックして/前の投げ縄を保つことができます。私は、文字通り、HTMLテンプレートを含むすべての私のテストケースを試してみました

    ui <- fluidPage(
        plotlyOutput("plot"), 
        verbatimTextOutput("click"), 
        verbatimTextOutput("brush") 
    ) 
    
    server <- function(input, output, session) { 
        frame1 <- data.frame() 
        frame2 <- data.frame() 
        nms <- row.names(mtcars) 
    
        output$plot <- renderPlotly({ 
         p <- ggplot(mtcars, aes(x = mpg, y = wt, key = nms)) + geom_point() 
         ggplotly(p) %>% layout(dragmode = "lasso") 
        }) 
    
        output$click <- renderPrint({ 
         d <- event_data("plotly_click") 
         if (!is.null(d)) { 
          frame1 <<- frame1[is.null(frame1$pointNumber), ] # Optional line to remove the previous selections 
          frame1 <<- rbind(frame1, d) 
         } 
          frame1 
         }) 
    
        output$brush <- renderPrint({ 
         d <- event_data("plotly_selected") 
         if (!is.null(d)) { 
          frame2 <<- frame2[is.null(frame2$pointNumber), ] # Optional line to remove the previous selections 
          frame2 <<- rbind(frame2, d) 
         } 
          frame2 
    
        }) 
    
    } 
    
    shinyApp(ui, server) 
    
  • +0

    私は状態を追跡してカスタム回避策を講ずることなく、プロンプトでそれをネイティブに行うことを望んでいました。私は、選択を無効にしないようにする方法を知りたかったのです。それは不気味なバグです –

    関連する問題