ggvis:使用滑块转换数据集中的数值

ggvis: Transforming numeric values in the dataset using a slider

我正在尝试使用 input_slider(1,10) 将数据集中的值乘以所选值来转换它们。例如,如果选择的值为 2,我希望这些值变为 120*2、140*2、100*2。

这是我的例子:

mydata <- data.frame(year=c(1,2,3), value=c(120,140,100))
mydata %>%
  ggvis(~year, ~value) %>%
  layer_bars()

一种方法是对 y 使用 input_slider,使用 map 参数将滑块结果与 value 变量相乘。

mydata %>%
    ggvis(~year, y = input_slider(1, 10, value = 1, label = "Multiplier", 
                                    map = function(x) x*.$value)) %>% 
    layer_points()

然而,这实际上不适用于 layer_bars 目前。

你可以通过使用 layer_rects 来解决这个问题,但是你必须输入条形宽度,如果 year 是一个因素,这一切都会更好。

 mydata %>%
    ggvis(~factor(year), y = input_slider(1, 10, value = 1, label = "Multiplier", 
                                 map = function(x) x*.$value)) %>% 
    layer_rects(y2 = 0, width = band())

在找到 之后,我确实找到了另一种选择。在您的情况下,您可以使用 mutate 来重新计算您的 y 变量,然后在 layer_bars 中使用它。注意 eval 的使用。您可以在 dplyr-ggvis (?"dplyr-ggvis").

的帮助页面上看到此方法的更多示例
library(dplyr)

mydata %>% 
    ggvis(~year, ~value) %>%
    mutate(value = eval(input_slider(1, 10, value = 1, label = "Multiplier"))*value) %>%
    layer_bars()