highcharts R:如何使用循环创建追溯高值图

cwxwcias  于 2022-11-10  发布在  Highcharts
关注(0)|答案(1)|浏览(150)

在做一项工作时,我发现了一个我不知道如何解决的问题。我有一个包含2列的数据框:

  • 日期
  • 价值

它总共有1303行。
每个日期有12个值(每个月有1个值),但去年除外,该年只有7个值
我需要做的工作是使用“highcharter”库创建一个“drilldown”样式的图表。问题是我不知道如何高效地完成它。我想到的解决方案不是很高效,下面我展示了我的解决方案,这样你就可以明白我的意思了。
dataframe
第一个问题

第一次看到我的解决方案时,我意识到为了完成图表,我必须为每年创建一个值的子集。意识到这一点后,我尝试使用“for循环”找到一个更有效的解决方案,但到目前为止,我无法使其工作。

有没有更有效的方法来创建这个图形使用'循环'!?
如果它可以用另一种方式而不是使用循环,我也想知道。
谢谢你阅读我的问题,我希望我解释得很好。

3yhwsihp

3yhwsihp1#

使用splitpurrr::imap,您可以按年份拆分数据,并循环生成的列表,以将数据转换为hc_drilldown所需的嵌套列表对象。使id成为numeric并传递一个未命名的列表是很重要的。

library(tidyverse)
library(highcharter)
library(lubridate)

series <- split(df, year(df$date)) %>% 
  purrr::imap(function(x, y) list(id = as.numeric(y), data = list_parse2(x)))

# Unname list

names(series) <- NULL

highchart() %>%
  hc_chart(type = "column") %>%
  hc_title(text = "Example Drilldown") %>%
  hc_xAxis(type = "category") %>%
  hc_legend(enabled = FALSE) %>%
  hc_plotOptions(series = list(boderWidth = 2,
                               dataLabels = list(enabled = TRUE))) %>%
  hc_add_series(data = dfDD,
                name = "Mean",
                colorByPoint = TRUE) %>%
  hc_drilldown(allowPointDrilldown = TRUE,
               series = series)

相关问题