使用输入滑块仅更改某个y值

时间:2016-07-17 12:29:22

标签: r dplyr ggvis

我希望用交互式numpy array图表显示异常值对估计的OLS回归线的影响。为此我想要一个滑块,它只更新我的数据帧的一个y值,例如summaryDF.set_index(np.array(['A','B','C', 'D','E','F','G','H','I','J','K','L']), inplace=True) print (summaryDF) accuracy f1 precision recall A 0.494 0.722433 0.722433 0.722433 B 0.290 0.826087 0.826087 0.826087 C 0.274 0.629630 0.629630 0.629630 D 0.278 0.628571 0.628571 0.628571 E 0.288 0.718750 0.718750 0.718750 F 0.740 0.740000 0.740000 0.740000 G 0.698 0.765133 0.765133 0.765133 H 0.582 0.778547 0.778547 0.778547 I 0.682 0.748235 0.748235 0.748235 J 0.574 0.767918 0.767918 0.767918 K 0.398 0.711656 0.711656 0.711656 L 0.530 0.780083 0.780083 0.780083 ggvis等等。我怎样才能做到这一点?

要播放的一些数据:

df$y[10] + 1

我当前的静态ggvis代码:

df$y[10] + 2

1 个答案:

答案 0 :(得分:0)

可以将dplyr功能与ggvis结合使用。 以下链接描述了它的工作原理:

dplyr verbs for ggvis

  

将dplyr动词应用于ggvis对象会产生反应   转换:每当基础数据发生变化时   转型将重新计算。

有了这个,我最终使用mutate和自编写的函数outlier。 重要的是在eval()中包含反应滑块输入。我相信仍有改进的潜力,但这可能是一个很好的起点。

library(ggvis)
library(dplyr)

set.seed(123)
x     <- sort(runif(15, min = 30, max = 70 ))
y     <- rnorm(15 , mean = 200, sd = 50)
df    <- data.frame(y, x)

v       <- input_slider(0, 250, value = 0, step = 25, animate = TRUE)
outlier <- function(y, v) y + c(rep(0, 14), v)

df %>% 
  ggvis(x = ~x, y = ~y)  %>% 
  mutate(y = outlier(y, eval(v))) %>% 
  layer_points() %>%
  layer_model_predictions(model  = "lm", formula = y ~ x)