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