react+antd系列之引入echart圖表

要在antd中引入echart圖表,首先得安裝echart包,命令以下:css

cnpm install echarts --save

echart安裝完畢,要如何使用呢,在react中咱們要引入咱們剛剛安裝的echart,以下:react

import echarts from 'echarts/lib/echarts';

可是這裏引入這個還不止,假設你要畫柱狀圖,則你得引入:git

import 'echarts/lib/chart/bar';

若是你要畫折線圖,你得引入:npm

import 'echarts/lib/chart/line';

這裏你要畫什麼的時候,就引入什麼,具體參考引入路徑地址:https://www.npmjs.com/package...antd

底下有個echart圖表例子,代碼以下以下:echarts

import React from 'react';
import echarts from 'echarts/lib/echarts';
import 'echarts/lib/chart/bar';
import 'echarts/lib/chart/line';
import 'echarts/lib/component/tooltip';
import 'echarts/lib/component/title';
import 'echarts/lib/component/legend';
import 'echarts/lib/component/toolbox';
import 'echarts/lib/component/markPoint';
import 'echarts/lib/component/markLine';


class Test extends React.Component {
  componentDidMount() {
    // 初始化
    var myChart = echarts.init(document.getElementById('main'));
    // 繪製圖表
    myChart.setOption({
        title: { text: '某地區蒸發量和降水量' },
        tooltip : {
          trigger: 'axis'
      },
      legend: {
          data:['蒸發量','降水量']
      },
      toolbox: {
          show : true,
          feature : {
              dataView : {show: true, readOnly: false},
              magicType : {show: true, type: ['line', 'bar']},
              restore : {show: true},
              saveAsImage : {
                show: true,
                type: 'jpg'
              }
          }
      },
        xAxis : [
          {
              type : 'category',
              data : this.props.data.xdata
          }
      ],
      yAxis : [
          {
              type : 'value'
          }
      ],
        series : [
          {
              name:'蒸發量',
              type:'bar',
              data: this.props.data.ydata.ydata1,
              markPoint : {
                  data : [
                      {type : 'max', name: '最大值'},
                      {type : 'min', name: '最小值'}
                  ]
              },
              markLine : {
                  data : [
                      {type : 'average', name: '平均值'}
                  ]
              }
          },
          {
              name:'降水量',
              type:'bar',
              data: this.props.data.ydata.ydata2,
              markPoint : {
                  data : [
                    {type : 'max', name: '最大值'},
                    {type : 'min', name: '最小值'}
                  ]
              },
              markLine : {
                  data : [
                      {type : 'average', name : '平均值'}
                  ]
              }
          },
      ]
    });
}
render() {
    return (
        <div id="main" style={{ width: '100%', height: 500 }}></div>
    );
}
}

export default Test;

咱們把這個圖表封裝成一個組件,而後咱們在別的頁面能夠引入這個組件,代碼以下:this

import React from 'react';
import { connect } from 'dva';
import styles from './IndexPage.css';
import Test from '../components/echart.js';

function IndexPage() {
  return (
    <div className={styles.normal}>
       <Test data={{
        xdata: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],
        ydata: {
          ydata1:[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
          ydata2:[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3],
        }
      }}/>
    </div>
  );
}

IndexPage.propTypes = {
};

export default connect()(IndexPage);

效果以下:spa

圖片描述

若是咱們要讓圖表自適應,也就是跟隨屏幕縮放而自動縮放改怎麼處理呢?其實只要添加一句代碼便可,這裏有兩種方案,第一種以下:rest

window.onresize = myChart.resize;

第二種以下:code

window.addEventListener("resize",function(){
        myChart.resize();
    });

具體源碼地址以下:
https://gitee.com/hope93/intr...

相關文章
相關標籤/搜索