我正在尝试使用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
分类并用于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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句