【问题标题】:How can I dynamically update pointStart series attribute from highcharts.js?如何从 highcharts.js 动态更新 pointStart 系列属性?
【发布时间】:2012-06-18 23:34:58
【问题描述】:

我有一个非常简单的 highcharts js 图表,它在 x 轴上有日期,在 y 轴上有值。这段代码可以正常工作:

chart = new Highcharts.Chart({
    chart: {
        renderTo: 'chart_container',
        type: 'line',
    },
    xAxis: {
        type: 'datetime',
            dateTimeLabelFormats: { 
                day: '%e / %b'              
            }
    },
    yAxis: {
            title: {
                text: null
            },              
            tickInterval: 1,
            tickmarkPlacement: 'on',
            min: 1,
            max: 5
    },
    series: [{
            name: 'serie_1',
            pointInterval: 24 * 3600 * 1000, // one day
            pointStart: Date.UTC(2011, 11, 22),            
            data: [
                2, 3, 5, 4, null, 4, 4, 4, 4, 3, 2, 2, 1, 2, 2, null               
            ]
   }]
});

我还有一个事件会在触发某些操作时更改图表的数据:

function reloadChart(){
    $.get('/my/ajax/link/', { ajax_param: 10 },                                         
        function(data){
            // HOW TO GET THIS TO WORKS??? series.pointStart is readonly
            chart.series[0].pointStart = data.newPointStart;

            chart.series[0].setData(data.data, true);
        }
    );
}

我的问题是:如何在图表初始化后更新我的 series[0].pointStart?

【问题讨论】:

    标签: javascript charts highcharts series


    【解决方案1】:

    我会重新考虑这一点。从您的 y 值系列创建 x,y 点比使用 pointStartpointInterval 选项更容易。

    startDate = Date.UTC(2010, 0, 1);
    createData = function(beginDate){
        someData = [];
        for (var i = 0; i < 11; i++){
         someData.push([beginDate + (3600 * 1000 * 24 * i), Math.random() * 100]);
        }
        return someData;
    }
    
    ....
    
    series: [{
            data: createData(startDate)
        }]
    

    然后在你的函数中:

     nextDay = function(){
        startDate += 3600 * 1000 * 24;        
        chart.series[0].setData(createData(startDate), true);
     }
    

    工作小提琴here.

    【讨论】:

    • 嗨,马克,感谢您的回复。看来你的方法是最好的。
    【解决方案2】:

    我想这就是你要找的东西

     chart.xAxis[0].setCategories();
    

    另见工作jsFiddle

    【讨论】:

    • 非常感谢!使用类别是我将 pointStarts 值更改为文本的解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    相关资源
    最近更新 更多