zoukankan      html  css  js  c++  java
  • highcharts实现画辅助线功能并删除

    这是本人自己实现了,推荐大家看highcharts官方的插件-注释功能(可画线,更强大)。我也发表过博客,地址:http://www.cnblogs.com/ZRRJDD/p/7365532.html 

    之前一直使用echarts,后来echarts3.0没有了画线功能,echarts2.0有画线功能。  自己有摸索学习了highcharts,highchart使用了自定义的划线功能。

    大致的实现思路:

      1、获取两个点坐标,然后画线。然后通过renderer实现画线的功能。在highchart中没有画线这个方法,但是有画路径方法即:this.renderer.path();里边传入的参数是一个数组。

      2.删除一条线。在画线的时候,将画好的线添加到每个组中,即add(group)。每个组有hide()和show()方法。调用hide方法即表示删除一条线。

      3.要实现删除上一条线。将每条线对应一个组,然后将组group放到一个数组中。每次调用数组的pop()方法,获取最后一个,然后调用hide()方法。

    js代码如下:

    var groups = [];
    $(function () {
        $.getJSON('https://data.jianshukeji.com/jsonp?filename=json/aapl-c.json&callback=?', function (data) {
            var x = '';
            var y = '';
            var line;
            $('#container').highcharts('StockChart', {
                chart: {
                    events: {
                        click: function (event) {
                            var group = this.renderer.g().add();
                            if(x !== '' && y !== '' &&groups.length %2 == 1){
                                line =   this.renderer.path(['M', x, y, 'L', event.chartX, event.chartY])
                                    .attr({
                                    'stroke-width': 1,
                                    stroke: 'red'
                                }).add(group) ;
                                line.toFront({
                                    zIndex:1
                                });
                                x = event.chartX;
                                y = event.chartY;
                            }else{
                                x = event.chartX;
                                y = event.chartY;
                            }
                            this.renderer.circle(x, y, 1).attr({
                                fill: '#FCFFC5',
                                stroke: 'black',
                                'stroke-width': 1
                            }).add(group);
                            if(groups.length %2 == 1){
                                x = '';
                                y = '';
                            }
                            groups.push(group);
                        }
                    }
                },
                rangeSelector : {
                    selected : 5
                },
                title : {
                    text : '苹果历史股价(股票代码:AAPL)'
                },
                series : [{
                    name : 'AAPL',
                    data : data,
                    tooltip: {
                        valueDecimals: 2
                    }
                }]
            });
        });
        $("#container").mousedown(function(event){
            console.log(event);
        });
    });
    function hiddenLine(){
        console.log(groups);
        if(groups.length > 0){
            if(groups.length % 2 === 0){
                for(var i=0;i<2;i++){
                    groups.pop().hide();
                }
            }else{
                groups.pop().hide();
            }
        }
    }

    html代码如下:

    <div id="container" style="min-400px;height:400px"></div>
    <input type="button" value="删除上一条线" onclick="hiddenLine();" />

    需要导入的js文件如下:

     

     hcode源代码地址:https://code.hcharts.cn/temp/hBOl1G/1

     git源码地址:https://github.com/ZRRJDD/highchart.git

     希望大家评论。

  • 相关阅读:
    LeetCode Subsets II
    LeetCode Rotate Image
    LeetCode Palidrome Number
    LeetCode Generate Parentheses
    LeetCode Maximum Subarray
    LeetCode Set Matrix Zeroes
    LeetCode Remove Nth Node From End of List
    Linux Loop设备 使用
    Linux 文件系统大小调整
    LeetCode N-Queens II
  • 原文地址:https://www.cnblogs.com/ZRRJDD/p/7357302.html
Copyright © 2011-2022 走看看