0

我想将一个系列与具有相同 x 轴但不同 y 值的外部变量进行比较。为了更容易解释问题,此处提供了示例代码。

数据系列是

series: [{data: [5, 4, 5, 7, 8, 6, 3, 6, 7, 4, 8, 9]},
   {data: [4, 6, 7, 9, 5, 9, 12, 11, 9, 7, 6, 5]}]

外部变量是

var extdata = [2,2,2,1,0,0,0,1,1,2,2,2];

它们共享相同的 x 轴(在此示例中为 Jan、Feb、...、Dec)。假设我想在该月的系列中的数据点加上外部变量中的相应条目至少为 10 时显示工具提示“最大值”,但否则保留总和的数值,以便三月的工具提示读取

March:
Series 1: 7
Series 2: 9

在四月读到

April:
Series 1: 8
Series 2: Max

是否可以仅使用工具提示格式化程序来执行此操作?如果不是,如何实现?谢谢!

4

2 回答 2

0

有几种方法可以做到这一点,但我能想到的最简单的方法是像这样格式化你的 extdata:

var extdata = {'Jan':2,
           'Feb':2,
           'Mar':2,
           'Apr':1,
           'May':0,
           'Jun':0,
           'July':0,
           'Aug':1,
           'Sep':1,
           'Oct':2,
           'Nov':2,
           'Dec':2};

然后在您的工具提示函数中,您可以像这样引用它:

formatter: function () {
        var s = '<b>' + this.x + '</b>';
        var month = this.x;
            $.each(this.points, function (i, point) {
                var total = point.y + extdata[month];
                s += '<br/>' + point.series.name + ': ' + (total>=10?'max':point.y);
            });
        return s;
    },

http://jsfiddle.net/3uhge/

通过对月份的 extdata 进行索引,您可以避免计算出您将鼠标悬停在哪个点上。如果需要,您可以通过遍历类别来查找月份名称来解决此问题。

于 2013-04-04T10:21:52.510 回答
0

对于分类,SteveP 的回答非常好。但是,如果您不想格式化数据,请使用以下内容:

s+= '<br/>Ext data: ' + extdata[this.points[0].point.x]; 

其中this.points[0].point.x等于外部数据索引的索引。jsFiddle


但是,如果您的 xAxis 未分类,您可以this.x像之前的答案jsFiddle一样简单地获取索引

于 2013-04-04T12:01:54.063 回答