highcharts延迟加载及刷新数据

Posted 绯叶阿卡丽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了highcharts延迟加载及刷新数据相关的知识,希望对你有一定的参考价值。

默认使用方法及配置:

<div id="container" style="min-width:400px;height:400px"></div>
$(function () {
    $(\'#container\').highcharts({
        chart: {
            plotBackgroundColor: null,
            plotBorderWidth: null,
            plotShadow: false
        },
        title: {
            text: \'2014 某网站上各个浏览器的访问量占比\'
        },
        tooltip: {
            headerFormat: \'{series.name}<br>\',
            pointFormat: \'{point.name}: <b>{point.percentage:.1f}%</b>\'
        },
        plotOptions: {
            pie: {
                allowPointSelect: true,
                cursor: \'pointer\',
                dataLabels: {
                    enabled: false
                },
                showInLegend: true
            }
        },
        series: [{
            type: \'pie\',
            name: \'浏览器访问量占比\',
            data: [
                [\'Firefox\',   45.0],
                [\'IE\',       26.8],
                {
                    name: \'Chrome\',
                    y: 12.8,
                    sliced: true,
                    selected: true
                },
                [\'Safari\',    8.5],
                [\'Opera\',     6.2],
                [\'其他\',   0.7]
            ]
        }]
    });
});

引入的js文件暂不显示

默认效果如图:

思路:  如要修改延迟加载及刷新数据为方式:

则可以先配置好默认的信息存放在option中,最后在填充数据,在调用highcharts的var chart = new Highcharts.Chart(options);渲染图形

eg:

var options = {
    chart: {
        renderTo: \'container\',
        plotBackgroundColor: null,
        plotBorderWidth: null,
        marginLeft: 0,
        plotShadow: false
    },
    title: {
        text: \' \',
        usehtml: true
    },
    tooltip: {
        pointFormat: \'<b>{point.name}</b>\'//鼠标上浮显示数据格式
    },
    exporting: {//导出按钮
        enabled: false
    },
    plotOptions: {
        pie: {
            allowPointSelect: true,
            cursor: \'pointer\',
            dataLabels: {
                enabled: true,
                format: \'<b>{point.name}</b>\', //显示说明的样式
                style: {
                    color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || \'black\'//颜色
                }
            },
            showInLegend: true
        }
    },
    series: [{
        type: \'pie\',//饼图
        name: \'详情\',
        data: []  //默认为空数据
     }]
};
function freshPage(dataJson){
    options.series[0].data = dataJson;//填充数据
    var chart = new Highcharts.Chart(options);//渲染图形
}

//调用代码如下

var data=[{name:\'test1\',y:30},{name:\'test2\',y:18}]//测试数据
 freshPage(data);

效果:

Ps:异步获取的数据若为字符串格式的json类型数据,可能需要通过 json.parse() 或者 eval(data)函数转化一下

 

刷新改变数据测试:

1.页面添加按钮:

 

<input type=\'button\' value="改变数据" onclick="changeData()"/> 

2.添加事件函数

function changeData(){
    var data=[{name:\'test3\',y:70},{name:\'test4\',y:30}]
    options.series[0].data = data;
    var chart = new Highcharts.Chart(options);
}

效果:

上文中的数据 应用于异步获取数据同样有效

例如可修改为:

$.post(url,[],function(data){
    data=eval(data);//传过来的字符串需要格式化为json
      freshPage(data);
})

 

以上是关于highcharts延迟加载及刷新数据的主要内容,如果未能解决你的问题,请参考以下文章

Highcharts异步服务器加载多个系列

延迟加载和立即加载的代码及区别

angularJS使用ocLazyLoad实现js延迟加载

片段布局加载延迟

当方法执行更新时刷新延迟加载的 Primefaces 数据表

刷新片段不再起作用?