Highcharter 工具提示不适用于许多系列

时间:2021-02-08 18:04:29

标签: r highcharts r-highcharter

我正在尝试使用 R 中的 highcharter 包创建一个包含多个系列(超过 50 个)的折线图。 当我使用较少的系列(小于 40)时,我的工具提示可以正常工作,但是当系列数量增加时,工具提示将停止显示 x 轴的类别,并开始简单地从零计数到刻度数。这是要重现的代码:

library(dplyr)
library(highcharter)

test1<-data.frame(Value=rnorm(300,0,1),Type=rep(c('A','B','C'),each=100),Period=rep(seq(as.Date('2020-01-01'),as.Date('2020-04-09'),by=1),3))
test2<-data.frame(Value=rnorm(500,0,1),Type=rep(as.character(1:50),each=10),Period=rep(seq(as.Date('2020-01-01'),as.Date('2020-01-10'),by=1),50))

category1<-unique(format(test1$Period,'%d/%b/%y'))
category2<-unique(format(test2$Period,'%d/%b/%y'))

hchart(test1,type='line',hcaes(x=as.character(Period),y=Value,group=Type)) %>% 
  hc_xAxis(type='category',categories=as.list(category1),title='',labels=list(rotation=-30)) %>%
  hc_legend(align='left',maxHeight=100) %>%
  hc_plotOptions(line=list(marker=list(enabled=F))) %>% 
  hc_tooltip(shared=T,
             formatter=JS("function() {
                 var s = '';
                 
                 $.each(this.points, function(i, point) {
                 
                 if (point.y !== 0) {
                 s += '<br><b>'+ point.series.name +': </b>'+ Highcharts.numberFormat(point.y,2,',','.');
                 }
                 
                 });
                 
                 return this.x + s;
                 }"))

hchart(test2,type='line',hcaes(x=as.character(Period),y=Value,group=Type)) %>% 
  hc_xAxis(type='category',categories=as.list(category2),title='',labels=list(rotation=-30)) %>%
  hc_legend(align='left',maxHeight=100) %>%
  hc_plotOptions(line=list(marker=list(enabled=F))) %>% 
  hc_tooltip(shared=T,
             formatter=JS("function() {
                 var s = '';
                 
                 $.each(this.points, function(i, point) {
                 
                 if (point.y !== 0) {
                 s += '<br><b>'+ point.series.name +': </b>'+ Highcharts.numberFormat(point.y,2,',','.');
                 }
                 
                 });
                 
                 return this.x + s;
                 }"))

这里是输出:

chart1

chart2

我不知道这是否是信息量的限制,但这是我无法解决的奇怪行为。

0 个答案:

没有答案
相关问题