用于计算 y 值的 R ggvis 交互式滑块(例如用于背景校正)
R ggvis interactive slider for calculating y values (e.g. for background correction)
我想使用 ggvis
滑块直观地对我的数据进行背景校正:
library("dplyr")
library("ggvis")
library("lubridate")
data <- data.frame(timestamp = Sys.time() - hours(10:1),
signal = rnorm(10),
temperature = rnorm(10))
mySlider <- input_slider(0, 2, value = 1, step = 0.1, label = "T-correction")
data %>%
ggvis(~timestamp, ~signal) %>%
layer_paths() %>%
layer_paths(x = ~timestamp, y = ~temperature, stroke := "red") %>%
mutate(new_signal = signal - mySlider * temperature) %>% # here, I would like to add in the slider
layer_paths(x = ~timestamp, y = ~new_signal, stroke := "darkgreen")
我得到一个 Error in function () : non-numeric argument to binary operator
。 ggvis 能做到这一点还是我做错了什么?
您可以使用 input_slider
的 map
参数来做到这一点。但是看来您必须显式调用 data$signal
和 data$temperature
。
# specify slider
mySlider <- input_slider(0, 2, value = 1, step = 0.1, label = "T-correction",
map = function(x) data$signal - x * data$temperature)
# plotting
data %>%
ggvis(~timestamp, ~signal) %>%
layer_paths() %>%
layer_paths(x = ~timestamp, y = ~temperature, stroke := "red") %>%
layer_paths(x = ~timestamp, y = mySlider, stroke = "darkgreen")
我想使用 ggvis
滑块直观地对我的数据进行背景校正:
library("dplyr")
library("ggvis")
library("lubridate")
data <- data.frame(timestamp = Sys.time() - hours(10:1),
signal = rnorm(10),
temperature = rnorm(10))
mySlider <- input_slider(0, 2, value = 1, step = 0.1, label = "T-correction")
data %>%
ggvis(~timestamp, ~signal) %>%
layer_paths() %>%
layer_paths(x = ~timestamp, y = ~temperature, stroke := "red") %>%
mutate(new_signal = signal - mySlider * temperature) %>% # here, I would like to add in the slider
layer_paths(x = ~timestamp, y = ~new_signal, stroke := "darkgreen")
我得到一个 Error in function () : non-numeric argument to binary operator
。 ggvis 能做到这一点还是我做错了什么?
您可以使用 input_slider
的 map
参数来做到这一点。但是看来您必须显式调用 data$signal
和 data$temperature
。
# specify slider
mySlider <- input_slider(0, 2, value = 1, step = 0.1, label = "T-correction",
map = function(x) data$signal - x * data$temperature)
# plotting
data %>%
ggvis(~timestamp, ~signal) %>%
layer_paths() %>%
layer_paths(x = ~timestamp, y = ~temperature, stroke := "red") %>%
layer_paths(x = ~timestamp, y = mySlider, stroke = "darkgreen")