render() {
        var rendered = this.get('rendered');
        var canvas = this.get('canvas');
        var geoms = this.get('geoms'); // 已经渲染过

        if (rendered) {
          this._initGeoms();

          this._adjustScale();
        } else {
          this.init();
          this.set('rendered', true);
        }

        this.emit(EVENT_BEFORE_RENDER);
        Chart.plugins.notify(this, 'beforeGeomDraw');

        this._renderAxis();

        var middlePlot = this.get('middlePlot');

        if (this.get('limitInPlot') && !middlePlot.attr('clip')) {
          var coord = this.get('coord');
          var clip = getClip(coord);
          clip.set('canvas', middlePlot.get('canvas'));
          middlePlot.attr('clip', clip);
        }

        this.emit(EVENT_BEFORE_GEOM_DRAW);

        for (var i = 0, length = geoms.length; i < length; i++) {
          var geom = geoms[i];
          geom.paint();
        }

        this.emit(EVENT_AFTER_GEOM_DRAW);
        Chart.plugins.notify(this, 'afterGeomDraw');
        canvas.sort();
        this.get('frontPlot').sort();
        Chart.plugins.notify(this, 'beforeCanvasDraw');
        canvas.draw();
        this.emit(EVENT_AFTER_RENDER);
        return this;
      }
/**
       * render the chart
       * @chainable
       * @return {Chart} return the chart instance
       */
render the chart
@chainable
@return {Chart} return the chart instance
render the chart @chainable @return { Chart } return the chart instance
render() {
        var rendered = this.get('rendered');
        var canvas = this.get('canvas');
        var geoms = this.get('geoms'); 
        if (rendered) {
          this._initGeoms();
          this._adjustScale();
        } else {
          this.init();
          this.set('rendered', true);
        }
        this.emit(EVENT_BEFORE_RENDER);
        Chart.plugins.notify(this, 'beforeGeomDraw');
        this._renderAxis();
        var middlePlot = this.get('middlePlot');
        if (this.get('limitInPlot') && !middlePlot.attr('clip')) {
          var coord = this.get('coord');
          var clip = getClip(coord);
          clip.set('canvas', middlePlot.get('canvas'));
          middlePlot.attr('clip', clip);
        }
        this.emit(EVENT_BEFORE_GEOM_DRAW);
        for (var i = 0, length = geoms.length; i < length; i++) {
          var geom = geoms[i];
          geom.paint();
        }
        this.emit(EVENT_AFTER_GEOM_DRAW);
        Chart.plugins.notify(this, 'afterGeomDraw');
        canvas.sort();
        this.get('frontPlot').sort();
        Chart.plugins.notify(this, 'beforeCanvasDraw');
        canvas.draw();
        this.emit(EVENT_AFTER_RENDER);
        return this;
      }
render ( ) { var rendered = this . get ( 'rendered' ) ; var canvas = this . get ( 'canvas' ) ; var geoms = this . get ( 'geoms' ) ; if ( rendered ) { this . _initGeoms ( ) ; this . _adjustScale ( ) ; } else { this . init ( ) ; this . set ( 'rendered' , true ) ; } this . emit ( EVENT_BEFORE_RENDER ) ; Chart . plugins . notify ( this , 'beforeGeomDraw' ) ; this . _renderAxis ( ) ; var middlePlot = this . get ( 'middlePlot' ) ; if ( this . get ( 'limitInPlot' ) && ! middlePlot . attr ( 'clip' ) ) { var coord = this . get ( 'coord' ) ; var clip = getClip ( coord ) ; clip . set ( 'canvas' , middlePlot . get ( 'canvas' ) ) ; middlePlot . attr ( 'clip' , clip ) ; } this . emit ( EVENT_BEFORE_GEOM_DRAW ) ; for ( var i = 0 , length = geoms . length ; i < length ; i ++ ) { var geom = geoms [ i ] ; geom . paint ( ) ; } this . emit ( EVENT_AFTER_GEOM_DRAW ) ; Chart . plugins . notify ( this , 'afterGeomDraw' ) ; canvas . sort ( ) ; this . get ( 'frontPlot' ) . sort ( ) ; Chart . plugins . notify ( this , 'beforeCanvasDraw' ) ; canvas . draw ( ) ; this . emit ( EVENT_AFTER_RENDER ) ; return this ; }
render the chart
 @chainable
 @return {Chart} return the chart instance
render the chart @chainable @return { Chart } return the chart instance
// 已经渲染过