首页 > 其他分享 >echarts使用与踩坑

echarts使用与踩坑

时间:2024-04-15 10:44:36浏览次数:11  
标签:name 分类 value 图例 使用 true echarts

0.踩坑点

  • 1.当图表不显示在页面(display:none)执行resize可能会导致图表样式混乱

1. 官网示例

import * as echarts from 'echarts';

// 基于准备好的dom,初始化echarts实例  
// 注意: 这里的main元素要有宽度才可以,不然页面上是看不到渲染的图标的,但实际上echarts已经初始化,
// 但是由于绘制挂载的元素没高度不可见 官网这里没有给出对应的main相关的代码 因此直接写一个<div id='main'></div> 是看不到渲染的元素的
var myChart = echarts.init(document.getElementById('main'));
// 绘制图表
myChart.setOption({
  title: {
    text: 'ECharts 入门示例'
  },
  tooltip: {},
  xAxis: {
    data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
  },
  yAxis: {},
  series: [
    {
      name: '销量',
      type: 'bar',
      data: [5, 20, 36, 10, 10, 20]
    }
  ]
});

2. 使用到的一些api

// 窗口变化后 重新绘制图形,达到自适应目的   
window.addEventListener('resize', function() {
  // 此处可以使用debounce进行加载优化
    myChart.resize();
  });
// 组件销毁 销毁掉绘制图表
 myChart.dispose();

3.使用到的属性

  const option: EChartsOption = {
      // 标题
      title: {
        // 是否显示标题
        show: true,
        // 标题文字
        text: 'Echarts示例',
        // 图表位置 可以为百分比 或者具体px值
        top: '5%',
        bottom: 10,
        left: 'center',
        right: 'left',
        // 标题样式
        textStyle: {
          fontSize: 12,
          color: '#929292',
        },
        // 副标题
        subtext: '副标题'
        ,
        // 副标题样式
        subtextStyle: {}
      },
      // 提示框
      tooltip: {
        // 数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用。
        trigger: 'item',
        // 背景色
        backgroundColor: 'white',
        // 边框
        borderColor: '#3fb1e3',
        // 文字样式
        textStyle: { color: '#333' },
        // 内容自定义
        formatter: (params) => {
          const { marker, name, value } = params;
          // marker为对应颜色小圆点
          return `${name}<br/>${marker}自定义显示内容:${value}`;
        },
        // 可以是字符串 代表{a} {b} 代表params中的参数
        // formatter: '{c}',
      },
      // 图例组件 即 饼图下方的分类 可以点击进行分类的选取 应用到对应的图形上
      legend: {
        // 图例类型 普通
        type: 'plain',
        // 是否展示
        show: true,
        // 位置
        bottom: '2%',
        // 文字样式
        textStyle: { fontSize: '12px', padding: 0, minMargin: 0 },
        // 颜色块大小  => 图例标记的图形宽度
        itemWidth: 15,
        // 图例组件整体宽度
        width: 180,
        // 图例的图形样式
        itemStyle: {
          borderWidth: 0,
        },
      },
      series: [
        {
          name: '示例1',
          // 图标类型 pie 饼图 bar 柱状图
          type: 'pie',
          // 位置
          bottom: 20,
          left: 'center',
          // 'radius' 扇区圆心角展现数据的百分比,半径展现数据的大小。
          // 'area' 所有扇区圆心角相同,仅通过半径展现数据大小。
          roseType: 'area',
          // 饼图半径  内半径:[20] 完整的园(披萨) 外半径: ['20%', '40%'] (最中间挖空一块 类似操场 只有跑道)
          radius: ['20%', '40%'],
          // 饼图的中心坐标
          center: ['center', 'center'],
          // 是否启用防止标签重叠策略,默认开启,在标签拥挤重叠的情况下会挪动各个标签的位置,防止标签间的重叠。 => 会溢出隐藏
          avoidLabelOverlap: true,
          // 饼图图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。
          label: {
            show: true,
            // 标签说明位置 不加带有折线  加了位置后折线会消失
            // position: 'insideTop',
            formatter: '{c}',
          },
          // 颜色 会均分 颜色例如  9条数据 3个颜色 每三个颜色为一组循环
          color: ['#2ea6da', '#3fb1e3', '#b0f5ff'],
          // 高亮区域配置
          emphasis: {
            // 是否开启悬浮高亮
            disabled: false,
            // 高亮区域样式
            itemStyle: {
              color: 'red'
            },
            // 高亮区域旁边的文字说明
            label: {
              show: true,
              // formatter: '1122'
            }
          },
          // 数据
          data: [
            { value: 0, name: '分类1' },
            { value: 1, name: '分类2' },
            { value: 2, name: '分类3' },
            { value: 3, name: '分类4' },
            { value: 5, name: '分类5' },
            { value: 4, name: '分类6' },
            { value: 3, name: '分类7' },
            { value: 6, name: '分类8' },
            { value: 4, name: '分类9' },
          ],
        },
      ],
    };

4.按需加载

全量引入大小
按需引入大小
如果按需加载后渲染图表缺失,可能你使用到的组件没有按需加载进入

5.react示例注释代码,可直接复制运行

import React, { useEffect } from 'react'
import * as echarts from 'echarts/core';
import {
  BarChart,
  // 系列类型的定义后缀都为 SeriesOption
  LineChart,
} from 'echarts/charts';
import {
  TitleComponent,
  // 组件类型的定义后缀都为 ComponentOption
  TooltipComponent,
  GridComponent,
  // 数据集组件
  DatasetComponent,
  // 内置数据转换器组件 (filter, sort)
  TransformComponent
} from 'echarts/components';
import { LabelLayout, UniversalTransition } from 'echarts/features';
import { CanvasRenderer } from 'echarts/renderers';



// 注册必须的组件
echarts.use([
  TitleComponent,
  TooltipComponent,
  GridComponent,
  DatasetComponent,
  TransformComponent,
  BarChart,
  LineChart,
  LabelLayout,
  UniversalTransition,
  CanvasRenderer
]);
type EChartsOption = echarts.EChartsCoreOption;

export default function Echarts() {
  useEffect(() => {
    let chartDom = document.getElementById('echarts')!;
    let myChart = echarts.init(chartDom);

    const option: EChartsOption = {
      // 标题
      title: {
        // 是否显示标题
        show: true,
        // 标题文字
        text: 'Echarts示例',
        // 图表位置 可以为百分比 或者具体px值
        top: '5%',
        bottom: 10,
        left: 'center',
        right: 'left',
        // 标题样式
        textStyle: {
          fontSize: 12,
          color: '#929292',
        },
        // 副标题
        subtext: '副标题'
        ,
        // 副标题样式
        subtextStyle: {}
      },
      // 提示框
      tooltip: {
        // 数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用。
        trigger: 'item',
        // 背景色
        backgroundColor: 'white',
        // 边框
        borderColor: '#3fb1e3',
        // 文字样式
        textStyle: { color: '#333' },
        // 内容自定义
        formatter: (params) => {
          const { marker, name, value } = params;
          // marker为对应颜色小圆点
          return `${name}<br/>${marker}自定义显示内容:${value}`;
        },
        // 可以是字符串 代表{a} {b} 代表params中的参数
        // formatter: '{c}',
      },
      // 图例组件 即 饼图下方的分类 可以点击进行分类的选取 应用到对应的图形上
      legend: {
        // 图例类型 普通
        type: 'plain',
        // 是否展示
        show: true,
        // 位置
        bottom: '2%',
        // 文字样式
        textStyle: { fontSize: '12px', padding: 0, minMargin: 0 },
        // 颜色块大小  => 图例标记的图形宽度
        itemWidth: 15,
        // 图例组件整体宽度
        width: 180,
        // 图例的图形样式
        itemStyle: {
          borderWidth: 0,
        },
      },
      series: [
        {
          name: '示例1',
          // 图标类型 pie 饼图 bar 柱状图
          type: 'pie',
          // 位置
          bottom: 20,
          left: 'center',
          // 'radius' 扇区圆心角展现数据的百分比,半径展现数据的大小。
          // 'area' 所有扇区圆心角相同,仅通过半径展现数据大小。
          roseType: 'area',
          // 饼图半径  内半径:[20] 完整的园(披萨) 外半径: ['20%', '40%'] (最中间挖空一块 类似操场 只有跑道)
          radius: ['20%', '40%'],
          // 饼图的中心坐标
          center: ['center', 'center'],
          // 是否启用防止标签重叠策略,默认开启,在标签拥挤重叠的情况下会挪动各个标签的位置,防止标签间的重叠。 => 会溢出隐藏
          avoidLabelOverlap: true,
          // 饼图图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。
          label: {
            show: true,
            // 标签说明位置 不加带有折线  加了位置后折线会消失
            // position: 'insideTop',
            formatter: '{c}',
          },
          // 颜色 会均分 颜色例如  9条数据 3个颜色 每三个颜色为一组循环
          color: ['#2ea6da', '#3fb1e3', '#b0f5ff'],
          // 高亮区域配置
          emphasis: {
            // 是否开启悬浮高亮
            disabled: false,
            // 高亮区域样式
            itemStyle: {
              color: 'red'
            },
            // 高亮区域旁边的文字说明
            label: {
              show: true,
              // formatter: '1122'
            }
          },
          // 数据
          data: [
            { value: 0, name: '分类1' },
            { value: 1, name: '分类2' },
            { value: 2, name: '分类3' },
            { value: 3, name: '分类4' },
            { value: 5, name: '分类5' },
            { value: 4, name: '分类6' },
            { value: 3, name: '分类7' },
            { value: 6, name: '分类8' },
            { value: 4, name: '分类9' },
          ],
        },
      ],
    };
    const chartResize = () => {
      myChart.resize()
    }
    myChart.setOption(option);
    window.addEventListener('resize', chartResize)
    return () => {
      myChart.dispose()
      window.removeEventListener('resize', chartResize)
    }
  })
  return (
    <>
      <div id='echarts' style={{ height: 300, width: '100%' }}>Echarts</div>

    </>
  )
}

标签:name,分类,value,图例,使用,true,echarts
From: https://www.cnblogs.com/coderzdz/p/18135404

相关文章

  • day01-02_我的Java学习笔记 (IDEA的安装、配置及使用、IDEA常用快捷键、IEDA创建空工
    1.IDEA的安装及配置1.1IDEA的安装具体操作,详见《04、IDEA安装详解.pdf》1.2IDEA主题配置、字体配置1.3IDEA常用快捷键1.4IDEA修改快捷键在IDEA工具中,Ctrl+空格的快捷键,可以帮助我们补全代码,但是这个快捷键和Windows中的输入法切换快捷键冲突,需要修改IDEA中......
  • python使用NVlabs/stylegan3生成图片和视频
    此项目只能随机生成图片,不能以图生图先把源码克隆到本地,https://github.com/NVlabs/stylegan3进入项目文件夹,激活虚拟环境condaenvcreate-fenvironment.ymlcondaactivatestylegan3访问https://pytorch.org/get-started/locally/,根据自己的环境选择在虚拟环境执行pi......
  • dva使用yarn编译出错
    1.报错信息./src/models/example.jsModulebuildfailed:TypeError:/Users/user/Desktop/learn-code/10.React/01_dva-came/src/models/example.js:path.isPrivateisnotafunctionatArray.forEach()只要启动项目,然后修改example代码,只要example发生改变就会报该......
  • vscode使用ES6装饰器器语法
    1.react项目配置package.json需要安装npmi@babel/plugin-proposal-decorators可能需要重启项目{"babel":{"plugins":[["@babel/plugin-proposal-decorators",{"legacy":true}......
  • vscode使用npm安装依赖报错
    1.报错信息npmERR!codeEPERMnpmERR!syscallopennpmERR!pathC:\Node\node_cache_cacache\index-v5\4b\d5\ac02d8eac51f5c368b18a948d14b7ba882d43e6f4cafddbf9dda740d2afanpmERR!errno-4048npmERR!Error:EPERM:operationnotpermitted,open'C:......
  • 关于mac使用figma以及企业微信3.1.18版本,CPU系统占用率飙升至70%
    问题描述使用一段时间正常,不知道是修改了什么设置,还是有什么软件冲突,导致cpu使用率极高系统进程中有一个kernel_task占用了大量的cpu并且该占用并不会消失,只要figma打开就会一直占用企业微信3.1.18也会导致该问题=>企业微信3.1.16之后版本总是会启用独立显卡,导致电......
  • 谷歌浏览器调试工具使用简介
    1.elements元素查看选中某个元素查看其样式直接调试修改样式选中元素右击给元素添加属性例如idclass等复制元素删除元素forcestate:添加active:hover样式将元素存储为全局变量storeasglobalvariable此时可以通过temp1对元素进行访......
  • 本地使用ts配置
    1.需要安装的依赖"dependencies":{"html-webpack-plugin":"^5.5.0","ts-loader":"^9.2.6","ts-node":"^10.4.0","tslib":"^2.3.1","typescript&q......
  • 在Linux中,如何使用NFS和Samba共享文件和目录?
    在Linux中,NFS(NetworkFileSystem)和Samba是两种常用的文件共享协议,分别用于在Unix-like系统之间以及跨Linux和Windows系统共享文件和目录。下面分别详细介绍如何使用它们:1.使用NFS共享文件和目录安装NFS服务:对于基于Debian/Ubuntu的系统:sudoapt-getupdatesudoapt-geti......
  • 在Linux中,如何使用fstab文件配置自动挂载?
    在Linux系统中,/etc/fstab是一个非常重要的系统配置文件,用于定义文件系统及其挂载点,以及它们如何在系统启动时自动挂载。当你想要确保某些磁盘分区或者存储设备在系统启动后自动加载并可用时,你需要编辑这个文件。以下是通过/etc/fstab配置自动挂载的详细步骤:1.确认设备和挂载......