HighStock 开始月份 rangeSelector 和 series.compare 在初始加载时不工作

HighStock Start Month rangeSelector And series.compare Not Working on Initial Load

我们正在努力创建一个股票图表,显示几个项目的偶数及其相对百分比随时间的变化。数据是每月的,我们有一个范围选择器设置为允许 6 个月、9 个月、1 年和所有数据。在初始加载时,我们选择 6 个月的范围。我们注意到一些奇怪的效果。这是代表问题的示例 jsFiddle: http://jsfiddle.net/wergeld/wq7eavq4/

范围选择器代码:

rangeSelector: {
    inputEnabled: false,
    allButtonsEnabled: false,
    buttons: [{
        type: 'month',
        count: 6,
        text: '6 Months'
    }, {
        type: 'month',
        count: 9,
        text: '9 Months'
    }, {
        type: 'year',
        count: 1,
        text: 'Year'
    }, {
        type: 'all',
        text: 'All'
    }],
    buttonTheme: {
        width: 60
    },
    selected: 0
},

1) 在初始加载时,0% "start" 出现在 2014 年 10 月的数据点中,相对百分比变化是从这一点开始计算的。然而,图表中显示的第一个点实际上是 2014 年 9 月。这与(我猜)2014 年 10 月相比有一些变化。

2) 当我们将选择更改为 9 个月范围选择器时,我们看到 2014 年 6 月的第一个点是 0% 值。然后,如果我们单击返回 6 个月范围选择器值,您可以看到现在我们将 2014 年 9 月设为 0%,之后的百分比差异都与初始加载时不同。

我的问题是:

一个。为什么当我将那个 rangeSelector 的计数设置为 6 时显示 7 个月,为什么当我将另一个范围选择器设置为 9 个月时显示 10 个月?基本上对于给定的 rangeSelector.count 我得到的比我预期的多 1。

b。为什么初始加载时的 0% 点与我单击超出该范围并返回该范围时的不同?

这与两个错误有关:

这是由于在图表完全呈现之前在核心中设置了极值造成的。可能的解决方法是放弃 selected 选项并创建您自己的选项来处理此问题:http://jsfiddle.net/wq7eavq4/6/

chart: {
   events: {
        load: function () {
            var selected = this.options.rangeSelector.selectedAfter,
                undefined;

            if (selected !== undefined) this.rangeSelector.clickButton(selected, true); //set when defined
        }
    }
},
rangeSelector: {
    selectedAfter: 1 // custom param
},

唯一的缺点是缺少初始动画。