2

我正在使用 Highcharts 为我的客户显示一些统计数据,但是当客户选择长数据范围时我遇到了问题

这是我的 highchart 在默认视图中的第一张图片在此处输入图像描述

如果我选择的日期范围太长,这里就是结果 在此处输入图像描述

这是我的代码

$(function () {
    var chart;
    $(document).ready(function() {
        chart = new Highcharts.Chart({
            chart: {
                renderTo: 'container',
                type: 'line',
                marginRight: 50,
                marginBottom: 80,
                dataGrouping: {
                    enabled: true
                }
            },                  
            title: {
                text: 'Visits Statistics',
                x: -20 //center
            },
            credits: {
                text: '',
                href: ''
            },
            subtitle: {
                text: '',
                x: -20
            },
            xAxis: {
                categories: [<?php print $categories; ?>],
                labels: {
                    rotation: -45,
                    align: 'right',
                    style: {
                        fontSize: '10px',
                        fontFamily: 'Verdana, sans-serif'
                    }
                }
            },
            yAxis: {
                title: {
                    text: 'Visits'
                },
                min: 0,
                plotLines: [{
                    value: 0,
                    width: 1,
                    color: '#808080'
                }]
            },
            tooltip: {
                formatter: function() {
                    return '<b>'+ this.x +' '+'</b><br/>'+ this.y +'Hit';
                }
            },
            legend: {
                layout: 'vertical',
                align: 'right',
                verticalAlign: 'top',
                x: -10,
                y: 10,
                borderWidth: 0
            },
            series: [{name:'from 2011-09-1',data: [<?php print $visits; ?>]}]
        });
    });
});
4

1 回答 1

3

如果您的图表配置正确,Highcharts 可以自动管理 x 轴中的时间值。你的问题是你告诉 Highcharts 使用你的类别,它显示了所有的类别。

要设置图表以避免这种情况,您需要做两件事:

  • 将 x 轴类型设置为datetime
  • 确保您的数据格式正确
    • 或者,如果您无法处理数据,请使用pointStartand 。pointInterval

使用您的示例:

// ...
xAxis: {
    //remove categories and set type as 'datetime'
    type: 'datetime',
    labels: {
        rotation: -45,
        align: 'right',
        style: {
            fontSize: '10px',
            fontFamily: 'Verdana, sans-serif'
        }
    }
},
// ...
series: [{
    name:'from 2011-09-1',
    // since you probably don't want to change your data, we leave it alone...
    data: [<?php print $visits; ?>],
    // ... and instead, set `pointStart` and `pointInterval`
    pointStart: Date.UTC(2011, 8, 1), // September 1, 2011
    pointInterval: 24 * 3600 * 1000 // each point is 1 day (measured in milliseconds)
}]
于 2013-08-23T23:49:49.083 回答