0

我想使用 htmlwidget 自动生成图形:highchart。

我得到了手动过程,但我很难概括它。对于两个时间序列,没关系,但我想扩展到一些未预先确定的时间序列(ts)。

我考虑使用 brew 生成代码并使用source,但这似乎有点“沉重”的解决方案。

理想情况下,我的输入是一个数据集,其中包含所有 ts 以及我想要选择的时间序列的向量。输入是一个 hygraph,其中包含我的向量中的所有 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(
  ...      
  )
4

2 回答 2

3

您可以使用以下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)
于 2016-08-22T13:14:31.830 回答
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))
于 2016-08-22T12:50:37.817 回答