如何在不改变Yaxis比例的情况下在Highchart Stock的工具提示中添加比较值

时间:2012-06-21 11:38:48

标签: jquery highcharts

我有一张图表,我需要像Highchart Stocks那样的时间导航器,所以我使用了Stock和一些手工制作的选项,它渲染得非常好。 在股票中,您可以选择绘制变量而不是值。 例如,这个数据系列:

[1,2,3,4,5]变化是[+ 1,+ 1,+ 1,+ 1]。您可以使用{point.change}和系列plotoption {compare:'value'}在工具提示中访问此信息。

但这样做会改变YAxis以适应这些变化。 我只想显示工具提示中的变化而不是更改我的图表。任何想法?

这是正确的图表正确的YAxis ,但您可以看到工具提示从不显示变体: http://jsfiddle.net/techunter/PhW3t/

这个{compare:'percent'}显示工具提示中的正确变体,但错误的YAxis比例http://jsfiddle.net/techunter/PhW3t/49/

2 个答案:

答案 0 :(得分:0)

显然很难让它工作,所以我已经制作了这样的工具提示格式化程序:

tooltip: {
                formatter:function(a,b,c){
                    var s = '<b>'+ Highcharts.dateFormat('%A, %b %e, %Y', this.x) +'</b>';
                    $.each(this.points, function(i, point) {
                        var prev = jQuery.inArray(point.x, point.series.processedXData)-1;
                        if(prev>=0){
                            prev = point.series.points[prev];
                            var percent = (point.y - prev.y) *100 / point.y;
                            var positive = false;
                            if(percent>0){
                                positive = true;
                                percent='+'+percent;
                            }
                            else
                                percent = percent +'';
                            percent = percent.substring(0,percent.indexOf('.')+3)+'%';
                            if(positive)
                                percent = '<span style="color:#000000">'+percent+'</span>';
                            else
                                percent = '<span style="color:#FF0000">'+percent+'</span>';
                            s += '<br/>'+'<span style="color:'+point.series.color+'">'+point.series.name+'</span>: <b>'+point.y+'</b> ('+percent+')';
                        }
                        else{
                            s += '<br/>'+'<span style="color:'+point.series.color+'">'+point.series.name+'</span>: <b>'+point.y+'</b>';
                        }
                    });

                    return s;
                },
                enable:true
            },

行动中: http://jsfiddle.net/techunter/PhW3t/55/

如果有人有更好/更快的想法,请分享。

答案 1 :(得分:-1)

查看您的代码,您将yAxis的最小值/最大值分别设置为2/5 - 这与您的非变体图表相同。 尝试these值(让您看到所有点):

yAxis: {
            min: -10,
            max:25,
            title: {
                text: '# of Hospitalizations'
            }
        }

如果需要,您可以通过计算值设置最小值/最大值。

修改 我发现这个link描述了进行预计算并将该数据作为注释字段放入系列对象中。如果要从SQL调用返回数据,这应该很容易。对SQL进行简单修改以返回具有百分比更改的新列。然后,调用从通话到注释字段的百分比变化。