Highstock:如何在工具提示上使第一列的系列名称成为动态,年份明智

时间:2016-12-09 11:06:40

标签: highcharts highstock

enter image description here我必须在一个图表中显示两个条形图,其中第一个系列(条形图)是2015年,第二个是2016年。但是当图表包含两年的数据时。然后我应该需要工具提示{point.key}来挑选{2016 - 1} = 2015并从中提取年份,让我们说,2016年,然后在运行时更改series.name到2016年的第一个栏和第二个栏为{point.key}在工具提示上。因此,如果条形图的数据是3 - 4年,为了第一个系列,现在它只采用我添加的series.name,但是如何使它成为第一个系列年的动态我们可以轻松选择来自Previous Year。我知道高档并不意味着像这样工作,但这种技巧我申请能够产生今年与去年的比较报告。

注意:为了在一个点上绘制图形,两个柱的时间戳将保持相同,但是值将从去年开始,以便能够将两个柱一起绘制。

因此,我需要在工具提示中动态地将2010更改为Current Year并将2011更改为Week from Monday, Aug 9, 2011,方法是从header <activity android:name=".GDriveActivities.DeleteActivity" android:theme="@style/AppTheme.NoActionBar" /> 中选择年份。

JS Fiddle https://jsfiddle.net/sfwcqk1w/

1 个答案:

答案 0 :(得分:1)

您可以通过tooltip.formatter完全控制工具提示中显示的内容。你可以在那里进行自己的计算。在工具提示中,您可以访问该系列中的所有点。

为启用了数据分组的点添加其他属性将不起作用 - 在工具提示中,您将获得分组点 - 并且这些点没有其他属性。

您的工具提示可能如下所示 - 它包含一些默认格式:

formatter: function() {
    var points = this.points;

    var headerFormat = '<span style="font-size: 10px">' + Highcharts.dateFormat('Week from %A, %b %e, %Y', this.x) + '</span><br/>';

    var pointFormat = '',
        previousYear;

    points.forEach(function(point) {
      var name = point.series.name,
        part;

      if (name === 'Previous Year') {
        previousYear = part = new Date(point.x).getFullYear();
      } else if (name === 'Current Year') {
        part = previousYear + 1
      } else {
        part = name;
      }
      pointFormat += '<span style="color:' + point.color + '">\u25CF</span> ' + part + ': <b>' + point.y + '</b><br/>';
    });

    return headerFormat + pointFormat;
  }

示例:https://jsfiddle.net/sfwcqk1w/3/