highcharts key point

阅读更多

 

highcharts中文教程
http://www.hcharts.cn/docs/index.php?doc=basic-chart

事件(在chart这个object里设置)
例子1(click):

    // create the chart
    $('#container').highcharts({
        chart: {
            events: {
                click: function (event) {
                    //this.renderer.label().add()
                    var label = this.renderer.label(
                            'x: ' + Highcharts.numberFormat(event.xAxis[0].value, 2) + ', y: ' + Highcharts.numberFormat(event.yAxis[0].value, 2),
                            event.xAxis[0].axis.toPixels(event.xAxis[0].value),
                            event.yAxis[0].axis.toPixels(event.yAxis[0].value)
                        )
                            .attr({
                                fill: Highcharts.getOptions().colors[0],
                                padding: 10,
                                r: 5,
                                zIndex: 8
                            })
                            .css({
                                color: '#FFFFFF'
                            })
                            .add();

                    setTimeout(function () {
                        label.fadeOut();
                    }, 1000);
                }
            }
        },

        series: [{
            data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
        }]
    });



例子2(drilldown):

    $('#container').highcharts({
        chart: {
            type: 'column',
            events: {
                drilldown: function (e) {
                    if (!e.seriesOptions) {
                        //this即是chart本身
                        var chart = this,
                            drilldowns = {
                                'Animals': {
                                    name: 'Animals',
                                    data: [
                                        ['Cows', 2],
                                        ['Sheep', 3]
                                    ]
                                },
                                'Fruits': {
                                    name: 'Fruits',
                                    data: [
                                        ['Apples', 5],
                                        ['Oranges', 7],
                                        ['Bananas', 2]
                                    ]
                                },
                                'Cars': {
                                    name: 'Cars',
                                    data: [
                                        ['Toyota', 1],
                                        ['Volkswagen', 2],
                                        ['Opel', 5]
                                    ]
                                }
                            },
                            /*e.point.name获取点击的那个点的名字
                             *name这个属性是series里定义的
                             */
                            series = drilldowns[e.point.name];

                        // Show the loading label.图标的loading这样加
                        chart.showLoading('Simulating Ajax ...');

                        setTimeout(function () {
                            chart.hideLoading();//隐藏loading提示
                            chart.addSeriesAsDrilldown(e.point, series);
                        }, 1000);
                    }

                }
            }
        },
        title: {
            text: 'Async drilldown'
        },
        xAxis: {
            type: 'category'
        },

        legend: {
            enabled: false
        },

        plotOptions: {
            series: {
                borderWidth: 0,
                //这个datalabel不是tooltip,而是每个点上的标签
                dataLabels: {
                    enabled: true
                }
            }
        },

        series: [{
            name: 'Things',
            colorByPoint: true,
            data: [{
                name: 'Animals',
                y: 5,
                drilldown: true
            }, {
                name: 'Fruits',
                y: 2,
                drilldown: true
            }, {
                name: 'Cars',
                y: 4,
                drilldown: true
            }]
        }],
    });



例子3(图表放大细化):

 $('#container').highcharts({

        chart: {
            zoomType: 'x'
        },

        title: {
            text: 'Hide overlapping data labels'
        },

        series: [{
            data: (function (arr, len) {
                var i;
                for (i = 0; i < len; i = i + 1) {
                    arr.push(i);
                }
                return arr;
            }([], 50)),
            dataLabels: {
                enabled: true,
                y: -5
            }
        }]

    });

	//button
    $('#setextremes').click(function () {
        $('#container').highcharts().xAxis[0].setExtremes(10, 15);
    });

    $('#unsetextremes').click(function () {
        $('#container').highcharts().xAxis[0].setExtremes();
    });



例子4(两个y轴):

$(function () {
    $('#container').highcharts({
        chart: {
            marginRight: 80 // like left
        },
        xAxis: {
            categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
        },
        yAxis: [{
            lineWidth: 1,
            title: {
                text: 'Primary Axis'
            }
        }, {
            lineWidth: 1,
            opposite: true,
            title: {
                text: 'Secondary Axis'
            }
        }],

        series: [{
            data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
        }, {
            type: 'spline',
            data: [144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4, 29.9, 71.5, 106.4, 129.2],
            yAxis: 1
        }]
    });
});



例子5(tooltip当中this的属性):

 

$('#container').highcharts({ 
      plotOptions: { 
            line:{
                 events :{ 
                     click:function(){ 
                        alert('x='+event.point.x + ", y=" + event.point.y + ", extra=" + event.point.extra); 
                     } 
                  } 
              } 
       }, 
       tooltip:{
             formatter:function(){ 
                   return '' + this.series.name + ': y=' + this.y + ', extra='+this.point.extra;
             }  
        }, 
       series: [{ data: [ 
           {y:29.7,extra:'hhh'}, 
           {y:71.5,extra:'2333'}, 
           {y:106.4,extra:'1122'}, 
           {y:129.2,extra:'vvvv'} ] }]
});
 
例子6(自定义legend点击事件,隐藏其他只显示点击serie):

 

plotOptions: {
    series: {
        events: {
            legendItemClick: function(e) {
                var index = this.index;

                var series = this.chart.series;

                if (!series[index].visible) {

                    for (var i = 0; i < series.length; i++) {

                        var s = series[i];

                        i === index ? s.show() : s.hide();
                    }
                }

                return false;
            }
        }
    }
} 

 

---关键点---
知识点1:
定义图的类型可以在chart的object选项里设置,也可以在series这里设置

series: [{
            type: 'column',
            data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
        }, {
            data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4].reverse()
        }]



知识点2:
label是坐标轴上刻度值的显示格式

xAxis: {
            reversed: false,
            title: {
                enabled: true,
                text: 'Altitude'
            },
            [color=blue]labels: {
                formatter: function () {
                    return this.value + 'km';
                }
            },[/color]
            maxPadding: 0.05,
            showLastLabel: true
        }


highcharts key point_第1张图片
 知识点3:
colors定义series颜色,数据列调用颜色的方式是第 n 个数据列使用第 n 个颜色数组里的值,当序列的数量超过颜色数组的长度,后续的序列将会从头调用。

 

$('#container').highcharts({
        chart: {
            type: 'pie'
        },
        colors: ['#058DC7', '#50B432', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655', '#FFF263', '#6AF9C4'],

        series: [{
            data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
        }]
    });
 
colorByPoint属性表示是为每一个series匹配一种颜色还是为每一个点匹配一种颜色
plotOptions: {
            column: {
               colorByPoint:true
            }
        }
 

 

 知识点4:

pointStart、pointInterval、tooltip还可以配在series里

 

$(function () {
    $('#container').highcharts({
        xAxis: {
            type: 'datetime',
            dateTimeLabelFormats: {
                day: '%e of %b'
            }
        },

        series: [{
            data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],
            pointStart: Date.UTC(2010, 0, 1),
            pointInterval: 24 * 3600 * 1000, // one day
            tooltip: {
                valueSuffix: ' mm'
           }
        }]
    });
});
 

 

知识点5:
legend的相关处理
legend: {
    layout: 'vertical',
    backgroundColor: '#FFFFFF',
    floating: true,
    align: 'left',
    verticalAlign: 'top',
    x: 90,
    y: 45,
    labelFormatter: function() {
        /*
         * 获取数据列下标,通过下标判断做一系列处理
         * 还可以通过获取数据列名字等来做判断(通过 console.log(this) 来查看数据列详细信息)
         */
        var index = this._i;

        // return null 则可以不显示图例项
        return index === 0 ? null : this.name;
    }
} 
 
知识点6:
公共设置
Highcharts.setOptions({
        // 所有语言文字相关配置都设置在 lang 里
        lang: {
            resetZoom: '重置',
            resetZoomTitle: '重置缩放比例'
        }
    });
 
知识点7:
要对highcharts当中的元素进行操作,如何找到元素?
控制台console查看对象属性:
1.对象的相应函数在对象的__proto__属性里面(主要看这点)
2.通常有animate相关属性
3.通常有jQuery1725832659457895这样的属性(应该是代表真正的元素,因为该属性下有events属性)
 
知识点8:
------------------------------------------
chart:
    event:    click

对应的获取选中的点是通过 chart.getSelectedPoints() 函数来实现的
饼图的白色间隔是linewidth的原因,相同情况产生于area图表
------------------------------------------
$(function () {
    $('#container').highcharts({
        chart: {
            zoomType: 'x'
        },
        xAxis: {
            type: 'datetime',
            maxZoom: 48 * 3600 * 1000		//表示label之间的间隔
        },

        series: [{
            data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],
            pointStart: Date.UTC(2010, 0, 1),
            pointInterval: 24 * 3600 * 1000 // one day	,表示取单位一天为每一个取值点	
        }]
    });
});

-------------------

plotOptions: {
    line: {			//针对line图标的公共设置
        dataLabels: {
            enabled: true,
            formatter: function() {
                return this.x + "	" + this.y;
            },
            // format: "{x} 	 {y}"
        }
    }
}  
 
  • highcharts key point_第2张图片
  • 大小: 7.9 KB
  • 查看图片附件

你可能感兴趣的:(JavaScript,highcharts)