2016-08-22 55 views
0

我想使用htmlwidget:highchart自动生成图生成。自动化htmlwidget:多时间序列的高图生成

我得到手动过程,但我很难概括它。 对于两个时间序列,这是可以的,但我想延伸到许多未预先确定的时间序列(ts)。

我想使用brew来生成代码并使用source,但它似乎有点“重”的解决方案。

理想情况下,我的输入是一个包含所有ts的数据集以及我想要选择的时间序列的向量。 输入是一个与我的向量中的所有ts的图。

# dataset 
dataset <- data.frame("Tokyo" = c(7.0, 6.9, 9.5, 14.5, 18.4, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6) 
         , "London" = c(3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8) 
         , "Paris" = c(2.9, 1.2, 2.4, 5.4, 8.6, 10.2, 16.0, 15.6, 12.2, 7.3, 3.6, 2.8)) 

# sets: 
set1 <- c("Tokyo", "Paris") 


# only with set 1: 

highchart() %>% 
    hc_series(
    list(
     name = "Tokyo", 
     data = c(7.0, 6.9, 9.5, 14.5, 18.4, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6) 
    ), 
    list(
     name = "Paris", 
     data = c(2.9, 1.2, 2.4, 5.4, 8.6, 10.2, 16.0, 15.6, 12.2, 7.3, 3.6, 2.8) 
    ) 
) 


# include n numbers of series, n undetermined (ex:3): 
set <- c("Tokyo", "Paris", "London") 

highchart() %>% 
    hc_series(
    ...  
) 

回答

2

可以使用hc_add_series_list功能:

# include n numbers of series, n undetermined (ex:3): 
set <- c("Tokyo", "Paris", "London") 

graph_data <- lapply(set, function(city) { 
    list(name = city, 
     data = dataset[[city]]) 
}) 

highchart() %>% 
    hc_add_series_list(graph_data) 
+0

谢谢,我没”不知道这个功能。我正在使用v0.3.0,该函数尚未实现。刚刚升级到v0.4.0并找到它。太好了,谢谢。 – YCR

0

我有使用表达式解决我的问题:

下面的代码工作:

## include n numbers of series, n undetermined: 
set <- c("Tokyo", "Paris", "London") 

sets.tab <- lapply(set, function(x) paste0("list(name = '", x, "', data = dataset[, '" 
        , x, "'])")) 

no.parsed.expr <- paste0(sets.tab, collapse = " 
        , ") 
end.code <- paste0("highchart() %>% 
    hc_series(", no.parsed.expr, ")") 

eval(parse(text = end.code))