R ggvis 在一个计算曲线层中组合多个滑块
R ggvis Combining multiple sliders in one calculated curve layer
基于我的这个问题:,我想使用几个ggvis
滑块来修改一个背景校正。
library("dplyr")
library("ggvis")
library("lubridate")
data <- data.frame(timestamp = Sys.time() - hours(10:1),
signal = rnorm(10),
temperature = rnorm(10),
secondParameter = rnorm(10))
# mySliderA works fine
mySliderA <- input_slider(0, 2, value = 0, step = 0.1, label = "T-correction",
map = function(x) data$signal - x * data$temperature)
# mySliderB wants to add a second parameter to the calculation based on mySliderA, this fails.
mySliderB <- input_slider(0, 2, value = 0, step = 0.1, label = "P2-correction",
map = function(x2) mySliderA - x2 * data$secondParameter )
data %>%
ggvis() %>%
layer_paths(x = ~timestamp, y = ~signal, stroke := "darkgreen") %>%
layer_paths(x = ~timestamp, y = ~temperature, stroke := "red") %>%
# layer_paths(... y = mySliderA, ...) # would work, but:
layer_paths(x = ~timestamp, y = mySliderB, stroke := "darkblue")
# does not.
如何让第二个滑块起作用?可能,我必须 link mySliderA
不同的计算值,但我不知道如何。
您可以使用另一个滑块的 observable
属性中的 getValue
函数。要获得两个滑块,您仍然需要用 mySliderA
绘制线条,但它当然可以是透明的。
# mySliderA
mySliderA <- input_slider(0, 2, value = 0, step = 0.1, label = "T-correction",
map = function(x) data$signal - x * data$temperature)
# mySliderB using `attr(mySliderA, "observable")$getValue()`
mySliderB <- input_slider(0, 2, value = 0, step = 0.1, label = "P2-correction",
map = function(x2) attr(mySliderA, "observable")$getValue() -
x2 * data$secondParameter)
# plotting
data %>%
ggvis() %>%
layer_paths(x = ~timestamp, y = ~signal, stroke := "darkgreen") %>%
layer_paths(x = ~timestamp, y = ~temperature, stroke := "red") %>%
layer_paths(x = ~timestamp, y = mySliderA, stroke := "transparent") %>%
layer_paths(x = ~timestamp, y = mySliderB, stroke := "darkblue")
基于我的这个问题:ggvis
滑块来修改一个背景校正。
library("dplyr")
library("ggvis")
library("lubridate")
data <- data.frame(timestamp = Sys.time() - hours(10:1),
signal = rnorm(10),
temperature = rnorm(10),
secondParameter = rnorm(10))
# mySliderA works fine
mySliderA <- input_slider(0, 2, value = 0, step = 0.1, label = "T-correction",
map = function(x) data$signal - x * data$temperature)
# mySliderB wants to add a second parameter to the calculation based on mySliderA, this fails.
mySliderB <- input_slider(0, 2, value = 0, step = 0.1, label = "P2-correction",
map = function(x2) mySliderA - x2 * data$secondParameter )
data %>%
ggvis() %>%
layer_paths(x = ~timestamp, y = ~signal, stroke := "darkgreen") %>%
layer_paths(x = ~timestamp, y = ~temperature, stroke := "red") %>%
# layer_paths(... y = mySliderA, ...) # would work, but:
layer_paths(x = ~timestamp, y = mySliderB, stroke := "darkblue")
# does not.
如何让第二个滑块起作用?可能,我必须 link mySliderA
不同的计算值,但我不知道如何。
您可以使用另一个滑块的 observable
属性中的 getValue
函数。要获得两个滑块,您仍然需要用 mySliderA
绘制线条,但它当然可以是透明的。
# mySliderA
mySliderA <- input_slider(0, 2, value = 0, step = 0.1, label = "T-correction",
map = function(x) data$signal - x * data$temperature)
# mySliderB using `attr(mySliderA, "observable")$getValue()`
mySliderB <- input_slider(0, 2, value = 0, step = 0.1, label = "P2-correction",
map = function(x2) attr(mySliderA, "observable")$getValue() -
x2 * data$secondParameter)
# plotting
data %>%
ggvis() %>%
layer_paths(x = ~timestamp, y = ~signal, stroke := "darkgreen") %>%
layer_paths(x = ~timestamp, y = ~temperature, stroke := "red") %>%
layer_paths(x = ~timestamp, y = mySliderA, stroke := "transparent") %>%
layer_paths(x = ~timestamp, y = mySliderB, stroke := "darkblue")