Highcharts:启用dataGrouping时的重复X轴标签(按月)

时间:2018-05-03 14:19:37

标签: javascript highcharts

我按月分组数据时遇到问题。我认为这是我使用的数据集大小(2018年1月1日 - 2018年4月30日)的错误,但也许有更好的方法来利用dataGrouping。我遇到的问题是X轴标签不正确。

对于2018年1月1日至2018年4月30日的日期范围:

预期的X轴: " Jan,' 18" " 2月,' 18" " Mar,' 18" " 4月,' 18"

实际X轴: " Jan,' 18" " 2月,' 18" " Mar,' 18" " Mar,' 18" " 4月,' 18"

在我的示例(jsfiddle)中,我在第76行有条件地启用了dataGrouping:data.dataGrouping.enabled = (e.target.value === 'month');

非常感谢任何见解。

1 个答案:

答案 0 :(得分:0)

我认为我找到了解决方案:使用HighStocks而不是HighCharts

我的结果已更新fiddle。总结:

使用HighScocks并关闭一些功能,使其显示为Highstock图表:

var chart = Highcharts.stockChart('myChart', {
    chart: {
        type: 'column',
        width: null
    },
    xAxis: {
        labels: {
            enabled: true,
            formatter: function() {
                if (grouping === 'date') {
                    return Highcharts.dateFormat('%b %e, \'%y', this.value);
                } else {
                    return Highcharts.dateFormat('%b, \'%y', this.value);
                }
            }
        }
    },
    navigator: {
        enabled: false
    },
    scrollbar: {
        enabled: false
    },
    rangeSelector: {
        enabled: false
    },
    yAxis: {
        title: {
            text: null
        }
    },
    title: {
        text: null
    },
    legend: {
        enabled: false
    },
    plotOptions: {
        series: {
            color: 'white'
        }
    },
    tooltip: {
        backgroundColor: '#0E7BBA',
        style: {
            color: 'white'
        },
        formatter: function() {
            var s = ''
            if (grouping === 'date') {
                s = '<b>' + Highcharts.dateFormat('%A, %b %e, %Y', this.x) + '</b>';
            } else {
                s = '<b>' + 'Date: ' + Highcharts.dateFormat('%A, %b %e, %Y', this.x) + '<br />' +
                '<b>Month: ' + Highcharts.dateFormat('%B %Y', this.x) + '</b>';
            }
            s += '<br />' + this.points[0].series.name + ': ' + this.y;
            return s;
        }
    },
    credits: {
        enabled: false
    },
        series: []
    }
);