我正在尝试使用ggvis进行交互式缩放,尤其是使用画笔进行缩放.从https://github.com/rstudio/ggvis/issues/143来看,我认为这应该有效.
我有以下闪亮和ggvis代码(完全可重现):
## ui.R
library(ggvis)
shinyUI(fluidRow(
uiOutput('ui_plot1'),
ggvisOutput("graph_plot1")
))
## server.R
shinyServer(function(input, output, session) {
domains <- reactiveValues(x = c(NA, NA), y = c(NA, NA))
zoom_brush = function(items, session, page_loc, plot_loc, ...) {
domains$x = c(200, 400)
}
plot = reactive({
mtcars %>%
ggvis(~disp, ~mpg) %>%
layer_points() %>%
scale_numeric('x', domain = domains$x, clamp = TRUE) %>%
handle_brush(zoom_brush)
}) %>% bind_shiny('graph_plot1', 'ui_plot1')
})
Run Code Online (Sandbox Code Playgroud)
因此,只要绘制画笔,就会改变反应域,这反过来会改变x的域scale_numeric.如果仍有以下挑战:
zoom_brush我得到画笔的坐标,但是在图的像素坐标系中不是域坐标系.如何将像素转换为域规模?在d3中我可以简单地使用范围来缩放变换函数,但是我没有看到这些在ggvis中是如何可用的(通过vega).on_move事件处理程序.在这种情况下,我只想在画笔完成时触发缩放,因此刷子上下文中的onmouseup事件.我担心现在根本不可能这样做?我运行以下R版本和软件包版本.
> sessionInfo()
R version 3.1.1 (2014-07-10)
Platform: x86_64-apple-darwin10.8.0 (64-bit)
locale:
[1] C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] ggvis_0.4.1 shiny_0.12.0
loaded via a namespace (and not attached):
[1] DBI_0.3.1 R6_2.0.1 Rcpp_0.11.6 assertthat_0.1 digest_0.6.8 dplyr_0.4.1 htmltools_0.2.6 httpuv_1.3.2
[9] jsonlite_0.9.16 lazyeval_0.1.10 magrittr_1.5 mime_0.3 parallel_3.1.1 tools_3.1.1 xtable_1.7-4
Run Code Online (Sandbox Code Playgroud)
我认为你需要对你的数据进行子集化:ggvis还没有足够聪明来忽略超出范围的点。以下server.R对我有用:
## server.R
shinyServer(function(input, output, session) {
domains <- reactiveValues(x = c(NA, NA), y = c(NA, NA))
mtcars_reactive <- reactive({
if (anyNA(domains$x))
mtcars
else
mtcars[mtcars$disp >= domains[["x"]][1] & mtcars$disp <= domains[["x"]][2], ]
})
zoom_brush = function(items, page_loc, session, ...) { # plot_loc
print(items)
message("page_loc")
print(page_loc)
print(session)
domains$x = c(200, 400)
}
reactive({
mtcars_reactive() %>%
ggvis(~disp, ~mpg) %>%
layer_points() %>%
handle_brush(zoom_brush)
}) %>% bind_shiny('graph_plot1', 'ui_plot1')
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
796 次 |
| 最近记录: |