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

时间:2015-10-12 01:49:51

标签: r input slider ggvis

我正在尝试使用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()

1 个答案:

答案 0 :(得分:1)

一种方法是使用input_slider y,使用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())

在找到this answer之后,我确实找到了另一种选择。在您的情况下,您可以使用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()