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