映画エクスプローラーの例のコードを適応させることにより、ggvisとshinyを一緒に使用する方法を学ぼうとしています。
ユーザーの操作によって新しいデータがグラフに追加されたときに、キーがある場合にホバー効果が新しいデータに対して機能しないという問題に遭遇しました。ツールチップも必要なので、キーを保持できるようにしたいと思います。
簡単な例を以下に示します。バグを再現するには:
1) 光沢のあるアプリを実行します。
2) 選択ボックスを使用して、「b」ポイントを追加します。
3) 期待どおり、「a」ポイントはホバーするとサイズが大きくなりますが、「b」ポイントは大きくなりません。
適切な動作を得るには、 の行をコメント アウトするだけで済みますserver.r
が、それはしたくありません (ツールチップを追加したいため)。すべてのポイントでホバー動作を取得するためにリアクティブでできることはありますか?
ありがとうございました!
server.r
library(ggvis)
# Set up data on app start
all_data <- data.frame(x=1:4, y=1:4, z=c("a", "b", "b", "a"), ID=1:4)
shinyServer(function(input, output, session) {
# Filter the data
this_data <- reactive({
all_data[all_data$z %in% input$z, ]
})
# A reactive expression with the ggvis plot
vis <- reactive({
this_data %>%
ggvis(~x, ~y) %>%
layer_points(fill = ~z,
key := ~ID, # Comment out this line for proper behavior
size := 50, size.hover := 500,
fillOpacity := 0.9, fillOpacity.hover := 0.5)
})
vis %>% bind_shiny("plot1")
})
ui.r
library(ggvis)
shinyUI(fluidPage(
titlePanel("Example"),
fluidRow(
column(3,
wellPanel(
selectInput("z", "Select Z", c("a", "b"),
selected = "a", multiple=TRUE)
)
),
column(9,
ggvisOutput("plot1")
)
)
))