繁体   English   中英

您如何使用 highcharter 包在 R 闪亮的折线图中提供多个系列而不对系列进行硬编码?

[英]How could you supply multiple series to a line chart in R shiny using highcharter package and without hardcoding the series?

我正在尝试使用 highcharts 包创建一个折线图,其中包含与此类似的时间序列数据框:

reprexDF <- data.frame(category = c("apples","oranges","bananas","limes"),
                          month1 = c(5,8,10,2),
                          month2 = c(NA,7,2,3),
                          month3 = c(NA, NA, 10,2),
                          month4 = c(11,12,5,9)
                          )

我希望每一行都是折线图上的一条单独的线,显示每个类别跨月的趋势,所有这些都绘制在同一个图表上。

我尝试将每一行解析为一个列表:

reprexDF <- highcharter::list_parse2(reprexDf)

然后尝试绘制:

highchart() %>%
hc_plotOptions(line = list(marker = list(enabled = FALSE)))%>%
hc_add_series_list(reprexDF) 

但我仍然无法绘制这些数据。

我只是真的想避免对每个系列进行硬编码,因为列表应该是动态的。

首先将您的数据框转换为long。 然后你可以group_by category 并使用list_parse2按类别制作列表。

对于这个图,我确保month是 x 轴上的数字。 我将category重命名为name这样它就会显示在图例和标签中。 并添加了connectNulls ,以防您想连接缺失值 ( NA ) 之间的点。

library(highcharter)
library(tidyverse)

reprexDF2 <- reprexDF %>%
  pivot_longer(cols = -category, names_to = "month", values_to = "value", names_pattern = "month(\\d)$") %>%
  group_by(category) %>%
  do(data = list_parse2(data.frame(as.numeric(.$month), .$value))) %>%
  ungroup() %>%
  rename(name = category)

highchart() %>%
  hc_plotOptions(series = list(connectNulls = TRUE), line = list(marker = list(enabled = FALSE)))%>%
  hc_add_series_list(reprexDF2)

带线的 highcharter

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM