R语言highcharter如何正确设置highcharts的compare选项参数
Highcharter 股票图多序列百分比对比配置方法
原有代码失效原因
- 参数位置错误:
compare(百分比对比计算规则)、compareBase(对比基准值)是全局系列配置项,不能直接写在hc_add_series()的单个系列参数里,需要放在hc_plotOptions()中统一声明 - 时间序列转换错误:调用
tk_xts()时参数名写错(应为date_var而非data_var),且没有剔除原数据框的date列,会生成冗余字段导致绘图异常
修正后完整代码
library(highcharter) library(timetk) library(dplyr) # 构造测试数据 serie <- data.frame( date=c("2022-01-01","2022-01-02","2022-01-03"), serie2=c(1,2,5), serie3=c(4,6,7) ) serie$date <- as.Date(serie$date) # 正确转换为xts格式,剔除冗余date列 serie <- tk_xts(serie %>% select(-date), date_var = serie$date) highchart(type = "stock") %>% hc_title(text = "Comparison") %>% # 全局配置百分比对比规则,这是实现效果的核心 hc_plotOptions( series = list( compare = "percent", compareBase = 100 ) ) %>% hc_add_series(serie$serie2, name = "serie 2", color = "green") %>% hc_add_series(serie$serie3, name = "serie 3", color= "white") %>% hc_add_theme(hc_theme_db())%>% hc_navigator(enabled = FALSE) %>% hc_scrollbar(enabled = FALSE) %>% hc_legend(enabled = TRUE) %>% hc_exporting(enabled = TRUE) %>% hc_xAxis( labels = list( style = list( color = "white" ) ) ) %>% hc_yAxis( labels = list(format = '{value}%', style = list( color = "white" ) ) )
效果说明
运行代码后所有系列会以第一个观测点的数值为100%基准,自动计算各时间点相对基准的涨跌幅百分比,实现多序列涨跌幅度的同基准对比,效果如下:
- 支持任意数量的系列叠加对比
- 原有深色主题、坐标轴样式、导出、图例功能均不受影响
- 鼠标悬浮提示框会自动展示每个系列相对基准的涨跌幅数值
内容的提问来源于stack exchange,提问作者Angelo
相关产品推荐
相关产品推荐

