echarts-for-react

打印 上一主题 下一主题

主题 639|帖子 639|积分 1917

用echarts来画react的图表。
  1. import * as echarts from 'echarts/core';
  2. import {
  3.   TitleComponent,
  4.   ToolboxComponent,
  5.   TooltipComponent,
  6.   GridComponent,
  7.   LegendComponent,
  8. } from 'echarts/components';
  9. import { LineChart } from 'echarts/charts';
  10. import { UniversalTransition } from 'echarts/features';
  11. import { CanvasRenderer } from 'echarts/renderers';
  12. echarts.use([
  13.   TitleComponent,
  14.   ToolboxComponent,
  15.   TooltipComponent,
  16.   GridComponent,
  17.   LegendComponent,
  18.   LineChart,
  19.   CanvasRenderer,
  20.   UniversalTransition,
  21. ]);
  22. let chartDom = document.getElementById('main');
  23. let myChart = echarts.init(chartDom);
  24. let option;
  25. option = {
  26.   title: {
  27.     text: 'Stacked Line',
  28.   },
  29.   tooltip: {
  30.     //提示框
  31.     trigger: 'axis',
  32.     backgroundColor: '#FFFFFF',
  33.     borderColor: '#d0d0d7',
  34.     borderWidth: 1,
  35.     axisPointer: {
  36.       animation: false,
  37.       type: 'cross',
  38.       lineStyle: {
  39.         type: 'dashed',
  40.         color: '#9EB7ED',
  41.         width: 1,
  42.         opacity: 1,
  43.       },
  44.     },
  45.     formatter: (params) => {
  46.       let newParams = '';
  47.       newParams += `${params[0].data[0]}<br />`;
  48.       params.forEach((param) => {
  49.         const encode1 = param.value[param.encode.y[0]];
  50.         const encode1Fn = fNumber(4, true, true, 'nan')(+encode1);
  51.         const temp1 = `${param.marker}${param.seriesName}:${encode1Fn}<br />`;
  52.         newParams += temp1;
  53.       });
  54.       return `<p style="coloe:#6581BE;display:inline;">${newParams}</p>`;
  55.     },
  56.   },
  57.   legend: {
  58.     //图标
  59.     left: '5%',
  60.     itemGap: 25,
  61.     textStyle: {
  62.       fontSize: 13,
  63.       rich: {
  64.         hint: { color: '#9A9A9A' },
  65.         rise: { color: '#D20A10' },
  66.         drop: { color: '#5E9B42' },
  67.       },
  68.     },
  69.     inactiveColor: '#777', //点击消失后的颜色
  70.     data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine'],
  71.   },
  72.   grid: {
  73.     left: '3%',
  74.     right: '4%',
  75.     bottom: '3%',
  76.     containLabel: true,
  77.   },
  78.   toolbox: {
  79.     //控制下载和导出数据的按钮
  80.     top: '5%',
  81.     right: '10%',
  82.     feature: {
  83.       dataView: {
  84.         show: true,
  85.         lang: ['', '关闭', '导出excel'],
  86.         optionToContent: (opt) => {
  87.           const newData = opt?.dataset[0]?.source;
  88.           let tableHeader = '';
  89.           opt.series.forEach((os) => {
  90.             tableHeader = `${tableHeader}<td>${os.name}</td>`;
  91.           });
  92.           tableHeader += '</tr>';
  93.           let table = `<table id="echarts-table-dataview" style="width:100%;text-align:center"><tbody><tr><td>时间</td>${tableHeader}`;
  94.           newData.forEach((item) => {
  95.             table = `${table}<tr>
  96.           <td>${item.tradeData}</td>
  97.           <td>${item.today !== '' || null ? item.today : '--'}</td>//多个数据可以多写几个
  98.           `;
  99.           });
  100.           table = `${table}</tbody></table>`;
  101.           return table;
  102.         },
  103.         contentToOption: () => {
  104.           const tableSheet = XLSX.utils.table_to_sheet(
  105.             document.getElementById('echarts-table-dataview'),
  106.             {
  107.               raw: true,
  108.             },
  109.           );
  110.           tableSheet['!cols'] = [{ wch: 14 }, { wch: 12 }, { wch: 5 }];
  111.           const workbook = XLSX.utils.book_new();
  112.           const fileName = Number(flagNet) === 1 ? `标题1` : '标题2';
  113.           XLSX.utils.book_append_sheet(workbook, tableSheet, fileName);
  114.           XLSX.writeFile(workbook, fileName + '.xlsx');
  115.         },
  116.       },
  117.     },
  118.     feature: {
  119.       saveAsImage: {},
  120.     },
  121.   },
  122.   xAxis: {
  123.     type: 'category',
  124.     boundaryGap: false,
  125.     data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
  126.   },
  127.   yAxis: {
  128.     type: 'value',
  129.   },
  130.   series: [
  131.     {
  132.       name: 'Email',
  133.       type: 'line',
  134.       stack: 'Total',
  135.       data: [120, 132, 101, 134, 90, 230, 210],
  136.     },
  137.     {
  138.       name: 'Union Ads',
  139.       type: 'line',
  140.       stack: 'Total',
  141.       data: [220, 182, 191, 234, 290, 330, 310],
  142.     },
  143.     {
  144.       name: 'Video Ads',
  145.       type: 'line',
  146.       stack: 'Total',
  147.       data: [150, 232, 201, 154, 190, 330, 410],
  148.     },
  149.     {
  150.       name: 'Direct',
  151.       type: 'line',
  152.       stack: 'Total',
  153.       data: [320, 332, 301, 334, 390, 330, 320],
  154.     },
  155.     {
  156.       name: 'Search Engine',
  157.       type: 'line',
  158.       stack: 'Total',
  159.       data: [820, 932, 901, 934, 1290, 1330, 1320],
  160.     },
  161.   ],
  162. };
  163. option && myChart.setOption(option);
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

雁过留声

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表