我正在尝试通过改编电影资源管理器 exmaple 中的代码来学习如何一起使用 ggvis 和 shiny 。
我遇到了一个问题,当用户的交互向图表添加新数据时,如果有键,悬停效果对新数据不起作用。我希望能够保留密钥,因为我还想要一个工具提示。
下面是一个简单的示例。重现错误:
1) 运行闪亮的应用程序。
2) 使用选择框添加“b”点。
3) 现在“a”点在悬停时会增加大小,正如预期的那样,但“b”点不会。
为了获得正确的行为,我可以只注释掉 中的行server.r
,但我不想这样做(因为我想添加工具提示)。我可以用反应性做些什么来获得所有点的悬停行为吗?
谢谢!
服务器.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")
})
用户界面
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")
)
)
))