使用highcharter为日期型X轴时间序列添加标注的问题
问题原因
Highcharts 底层对时间类型的X轴使用毫秒级Unix时间戳作为坐标单位,直接传入R原生Date类型作为标注点的x值时,与坐标轴实际使用的数值格式不匹配,导致标注无法定位到对应位置。
修复后的完整代码
library(highcharter) df <- data.frame( x = seq(as.Date("2021-01-01"),as.Date("2021-01-10"),by = "days"), y = 1:10 ) hchart(df,"line", hcaes(x = x, y = y)) %>% hc_annotations( list( labels = lapply(1:nrow(df),function(i){ list(point = list( x = as.numeric(df$x[i]) * 86400000, y = df$y[i], xAxis = 0, yAxis = 0 )) }) ) )
关键修改说明
- 核心是将
Date类型的x值转换为Highcharts时间轴适配的毫秒级时间戳:as.numeric(df$x[i]) * 86400000(86400000 是一天的总毫秒数,等价于24*3600*1000) - 其余标注逻辑和数值型X轴的用法完全一致
内容的提问来源于stack exchange,提问作者K.Hua
相关产品推荐
相关产品推荐

