美文网首页
图表根据坐标值变化颜色

图表根据坐标值变化颜色

作者: 狂奔的小小胖子 | 来源:发表于2017-08-04 12:53 被阅读0次

    样例代码

    var chart = null;//定义图表对象
    var chartModelJson = null;//定义参数对象
    var colorJson = {
        定义各个值对应的颜色
        value1:'#f7a35c'
    }
    var updateChart = function(){
        if(判断需要的参数是否正确){
            参数不正确,return结束
        }
        ajax.get('请求地址',null,function(data){
            var dataJson = [];//定义图表需要的值
            var zonesJson = [];//定义图表颜色取值json
            var text = '图表介绍';
            if(验证请求结果是否正常){
                请求结果不正常,不再绘制图表
            }else{
                var list = data.data;
                            //循环list,组装dataJson和zonesJson
                for(var i = 0;i<list.length;i++){
                    dataJson.push({x:list[i].time,y:parseInt(list[i].value),status:list[i].status});
                    zonesJson.push({value:list[i].time,color:colorJson[list[i].status]});
                }
                            //增加dataJson和zonesJson的值到当前时间
                var newDate = new Date().getTime();
                dataJson.push({x:newDate,y:parseInt(list[list.length-1].value),status:list[list.length-1].status});
                zonesJson.push({value:newDate,color:colorJson[list[list.length-1].status]});
            }
            if(chart == null){
                chart = Highcharts.chart('historyStatusChart', {
                    chart: {type: 'spline'},
                    subtitle: {text:text},
                    title: {text: '图表名称'},
                    xAxis: {type: 'datetime',dateTimeLabelFormats: {month: '%e. %b',year: '%b'},title: {text: '状态记录时间'}},
                    yAxis: {title: {text: 'Y轴坐标'}},
                    tooltip: {formatter:function(){return'<strong>'+this.series.name+'</strong><br/>记录时间:'+Highcharts.dateFormat('%Y-%m-%d %H:%M:%S',this.x)+'<br/>Y轴坐标:'+this.y+'<br/>状态:'+this.point.status;}},//格式化提示语
                    plotOptions: {spline: {marker: {enabled: false}}},
                    credits:{enabled: false},//不展示版权信息
                    exporting:{enabled:false},//不显示打印标签
                    series: [{name: '线条名称',data:dataJson,zoneAxis: 'x',zones: zonesJson,showInLegend: false}]//showInLegend: false不显示线条指示
                });
                
            }else{
                chart.update({
                    subtitle: {text:text},
                    series: [{name: '线条名称',data:dataJson,zoneAxis: 'x',zones: zonesJson,showInLegend: false}]
                });
            }
        },false);
    }
    

    知识点详解

    用途介绍

           我们经常会遇到这样的需求:用不同颜色标识出不同范围的值,例如 90-100 用绿色表示,60-80 用蓝色表示,小于 60用红色表示。在 Highcharts 4.1 之前,我们可以通过 plotBands 来标识出不同范围值对应的背景,或者用 plotLine 画一条标识线,还可以用不同颜色标记出点的颜色,这些解决方案都有自己的用途,但在某些情景下并不是最优方案。
    Highcharts 4.1 增加了一个非常牛逼的新特性:Zones,先来看个例子:


    示例图片

    zones参数

    zones: [{
      value: 0,//颜色的取值范围,大于等于该值的显示color的颜色
      color: '#f7a35c',//颜色值
      dashStyle: 'dot'//线条类型,默认是实线,dot表示虚线
    } ]
    

    更换颜色取值的坐标

           根据上述样例,只能做到通过Y轴的值来调整图表中线条的颜色。那么我们该如何使图表根据X轴的值来调整颜色呢?
           在需要调整颜色的series中增加zoneAxis参数,zoneAxis参数定义图表根据哪个轴的值来调整颜色,默认zoneAxis的值为'Y'。

    使用建议

           如果同一个页面中的不是需要同时展示多个chart,建议不要通过Highcharts同时绘制多个chart。可以创建一个chart,然后根据chart的update方法修改参数使图表改变乃至重新绘制内容。

    相关文章

      网友评论

          本文标题:图表根据坐标值变化颜色

          本文链接:https://www.haomeiwen.com/subject/blpvlxtx.html