一見簡単なことをしようとしています。ユーザーがデータポイントをクリックしたり、これらの点を別の色で描きます。これを行うために、どの点が選択されているかを見て、col
変数をデータフレームに追加し、ggplotにその列に従ってポイントの色を付けるように指示します。plotlyを使用して、データを変更した後でも選択したポイントの同じevent_data情報を返す方法
最初の選択では機能します。しかし、すでに選択されているポイントがある場合は、次のポイントのセットを選択することはできません。デバッグ文を追加してplotlyから返されるデータを確認しました。最初の選択後に異なるpointNumber
とcurveNumber
を返すようです。これらの変数がどのように機能するかについてのドキュメントは見つかりませんでしたが、この問題の修正方法がわかりません。ここで
だし、ここに再現するためのコードです:
library(plotly)
library(shiny)
ui <- fluidPage(
plotlyOutput("plot")
)
server <- function(input, output, session) {
output$plot <- renderPlotly({
click_data <- event_data("plotly_click", source = "select")
select_data <- event_data("plotly_selected", source = "select")
data <- mtcars
data$col <- "black"
if (!is.null(select_data)) {
cat(str(select_data))
idx <- select_data$pointNumber + 1
data[idx, "col"] <- "blue"
}
if (!is.null(click_data)) {
cat(str(click_data))
idx <- click_data$pointNumber + 1
data[idx, "col"] <- "red"
}
p <- ggplot(data, aes(mpg, wt, col = I(col))) + geom_point()
ggplotly(p, source = "select")
})
}
shinyApp(ui, server)
私も多分私は何をする必要があることは私自身の行識別子を作成し、key
審美的にそれを渡していることを言われてきました。私はkey <- row.names(data)
を定義してから、key=key
をggplotのaes()に渡そうとしていたのですが、何も変更されていないようです。
返されるx/yが常に元のデータの値と正確に一致するとは限りませんので、意図的にそれを避けていました。私はpointNumber/curveNumberがどのように動作するかを理解しようとしていますが、それは私にとっては非常に奇妙なようですが、明らかにその背後にはいくつかの論理があるはずです –