2014-10-01 93 views
1

在R中,如何用ggvis繪製多條曲線?不知道怎麼做,我試着用for循環做,在R中,如何用ggvis繪製多條曲線?

m <- 10 
n_max <- 100 
n <- seq.int(1, n_max, 1) 
s <- matrix(2*(rbinom(n_max*m, size=1, prob=0.5) - 0.5), ncol = m) 
x_estimate <- apply(s, 2, function(z) cumsum(z)/seq_along(z)) 

data <- data.frame(x_estimate, n) 
v <- data %>% 
    ggvis(x = ~n, y = ~x_estimate[,c(1)]) %>% 
    layer_lines() %>% 
    scale_numeric("y", domain = c(-0.5, 0.5), nice = FALSE, clamp = TRUE) 
for (i in 2:m) { 
    v <- (v %>% layer_paths(x = ~n, y = ~x_estimate[,c(i)])) 
} 
v 

結果圖只有2條曲線而不是m = 10條曲線。所以,for循環繪製重疊曲線。有任何想法嗎?更重要的是,如何正確使用ggvis

回答

1

我不能肯定地說這應該怎麼做,我的解決方案看起來有點笨拙,但它的工作原理。

v <- data %>% 
    ggvis(x = ~n) 
for (i in 1:m) 
{ 
    v <- (v %>% layer_paths(prop("y", as.name(colnames(data)[i])))) 
} 
v %>% 
    scale_numeric("y", domain = c(-0.5, 0.5), nice = FALSE, clamp = TRUE, label = 'y') 
+0

謝謝!任何提示爲什麼原始曲線重疊曲線? – 2014-10-01 16:48:04

+0

不客氣!不知道,說實話,我認爲你的代碼應該正常工作。 – tonytonov 2014-10-02 05:26:00