您的位置:

ECharts for React

一、介绍

ECharts 是一款由百度开发的基于 JavaScript 的数据可视化库,它的特点在于具有良好的可定制性和数据可视化效果,同时支持多种数据格式,能够快速搭建一个漂亮的数据可视化界面。而 ECharts for React 就是将 ECharts 库与 React 框架进行整合的组件库,使得在 React 应用中使用 ECharts 更加便捷。

二、安装和使用

安装 ECharts for React 可以使用 npm 安装命令:

{`npm install echarts-for-react`}

使用 ECharts for React,需要先导入 echarts 和 echarts-for-react:

{`import ReactECharts from 'echarts-for-react';
import echarts from 'echarts';`}

然后即可在 React 组件中使用 ReactEcharts 组件来渲染图表了:

{`function Chart() {
  const option = {
    // ECharts 配置项
  };
  
  return (
    
   
  );
}
`}

三、组件 API

1. ReactECharts 组件属性

ReactECharts 组件支持的属性包括:

  • option (required): ECharts 的配置项,必填项。
  • notMerge: 是否不与之前设置的 option 进行合并,默认为 false。
  • lazyUpdate: 是否在 setOption 后不立即更新图表,而是等待调用更新方法时再更新,默认为 false。
  • showLoading: 是否显示加载动画,默认为 false。
  • loadingOption: 加载动画的配置项。
  • loadingProgress: 加载动画的进度。
  • onChartReady: 图表渲染完成时的回调函数。
  • renderer: 图表的渲染器,支持 canvas 和 svg 两种方式,默认为 canvas。
  • dispose: 是否在组件 unmount 时销毁图表实例,默认为 true。
  • style: 组件的样式。
  • className: 组件的类名。
  • opts: ECharts 实例的配置项。
  • echarts: echarts 的引用,通常使用 import echarts from 'echarts' 导入。

2. 组件实例的方法

通过使用 refs 来获取组件实例,从而可调用组件实例的方法来对图表进行操作。ReactECharts 组件实例支持的方法包括:

  • getEchartsInstance(): 获取 ECharts 实例,用于调用 ECharts 原生方法。
  • getDom(): 获取 ECharts 实例所在的 DOM 元素。
  • getOption(): 获取图表配置项。
  • setOption(option: object, notMerge?: boolean, lazyUpdate?: boolean): 设置图表配置项。
  • clear(): 清空图表内容。
  • showLoading(type?: string, opts?: object): 显示加载动画,type 为加载动画类型,默认为 default。
  • hideLoading(): 隐藏加载动画。
  • resize(): 重置图表大小。
  • dispatchAction(option: object): 触发某个行为,例如切换折线图的显示与隐藏操作。

四、使用示例

1. 柱状图

{`import ReactECharts from 'echarts-for-react';
import echarts from 'echarts';

function BarChart() {
  const option = {
    title: {
      text: '柱状图',
    },
    tooltip: {},
    xAxis: {
      data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子'],
    },
    yAxis: {},
    series: [{
      name: '销量',
      type: 'bar',
      data: [5, 20, 36, 10, 10, 20],
    }],
  };

  return (
    
   
  );
}`}

2. 折线图

{`import ReactECharts from 'echarts-for-react';
import echarts from 'echarts';

function LineChart() {
  const option = {
    title: {
      text: '折线图',
    },
    tooltip: {
      trigger: 'axis',
    },
    xAxis: {
      type: 'category',
      boundaryGap: false,
      data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
    },
    yAxis: {
      type: 'value',
    },
    series: [{
      name: '邮件营销',
      type: 'line',
      stack: '总量',
      data: [120, 132, 101, 134, 90, 230, 210],
    }, {
      name: '联盟广告',
      type: 'line',
      stack: '总量',
      data: [220, 182, 191, 234, 290, 330, 310],
    }, {
      name: '视频广告',
      type: 'line',
      stack: '总量',
      data: [150, 232, 201, 154, 190, 330, 410],
    }, {
      name: '直接访问',
      type: 'line',
      stack: '总量',
      data: [320, 332, 301, 334, 390, 330, 320],
    }, {
      name: '搜索引擎',
      type: 'line',
      stack: '总量',
      data: [820, 932, 901, 934, 1290, 1330, 1320],
    }],
  };

  return (
    
   
  );
}`}

3. 饼图

{`import ReactECharts from 'echarts-for-react';
import echarts from 'echarts';

function PieChart() {
  const option = {
    title: {
      text: '饼图',
    },
    tooltip: {},
    series: [{
      name: '访问来源',
      type: 'pie',
      radius: '50%',
      data: [
        {value: 335, name: '直接访问'},
        {value: 310, name: '邮件营销'},
        {value: 234, name: '联盟广告'},
        {value: 135, name: '视频广告'},
        {value: 1548, name: '搜索引擎'},
      ],
    }],
  };

  return (
    
   
  );
}`}

4. 地图

{`import ReactECharts from 'echarts-for-react';
import echarts from 'echarts/dist/echarts'; // 引入中国地图的配置文件
import 'echarts/map/js/china';

function MapChart() {
  const option = {
    visualMap: {
      min: 0,
      max: 1000,
      left: 'left',
      top: 'bottom',
      calculable: true,
      inRange: {
        color: ['#e0ffff', '#006edd'],
      },
    },
    series: [
      {
        type: 'map',
        mapType: 'china',
        roam: false, // 禁止拖拽和缩放地图
        label: {
          normal: {
            show: true,
          },
          emphasis: {
            show: true,
          },
        },
        data: [
          { name: '北京', value: 110 },
          { name: '天津', value: 100 },
          { name: '上海', value: 130 },
          { name: '重庆', value: 120 },
          { name: '河北', value: 50 },
          { name: '河南', value: 20 },
          { name: '云南', value: 170 },
          { name: '辽宁', value: 70 },
          { name: '黑龙江', value: 80 },
          { name: '湖南', value: 180 },
          { name: '安徽', value: 90 },
          { name: '山东', value: 140 },
          { name: '新疆', value: 10 },
          { name: '江苏', value: 110 },
          { name: '浙江', value: 200 },
          { name: '江西', value: 70 },
          { name: '湖北', value: 230 },
          { name: '广西', value: 80 },
          { name: '甘肃', value: 20 },
          { name: '山西', value: 40 },
          { name: '内蒙古', value: 70 },
          { name: '陕西', value: 80 },
          { name: '吉林', value: 50 },
          { name: '福建', value: 100 },
          { name: '贵州', value: 60 },
          { name: '广东', value: 300 },
          { name: '青海', value: 10 },
          { name: '西藏', value: 1 },
          { name: '四川', value: 200 },
          { name: '宁夏', value: 20 },
          { name: '海南', value: 10 },
          { name: '台湾', value: 3 },
          { name: '香港', value: 7 },
          { name: '澳门', value: 7 },
        ],
      },
    ],
  };

  return (
    
   
  );
}`}