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> </>
)
}

echarts使用与踩坑的更多相关文章

  1. ant.design React使用Echarts,实力踩坑

    最近项目用到Echarts(以下用ec代替),于是照猫画虎得引入到团队的antd项目中,但是遇到2个棘手问题: 1. ec对dom不渲染,检查后发现,原来是全局存在id重复,所以使用React时,最好 ...

  2. vue父组件异步传递prop到子组件echarts画图问题踩坑总结

    效果图: 大致思路:考虑到5张图都是折线图,所以准备用一个子组件承接echarts画图,然后父组件通过prop传递不同数据来展示不同的图 踩坑问题: 1.引入line子组件,画了5个元素,但是只显示一 ...

  3. webpack踩坑--webpack 2.x升级至4.x

    一.安装webpack-cli,webpack@4.26.1 1.npm install webpack-cli -D 2.npm install webpack@4.26.1 -D 二.踩坑 执行n ...

  4. 微信小程序之mpvue+iview踩坑之旅

    因为之前参照微信的原生的文档写过一些小程序的demo,写的过程比较繁琐,后来出了美团的mpvue,可以直接使用vue开发,其他的不作对比,这篇文章记录一下踩坑之旅. 参照mpvue http://mp ...

  5. vue踩坑之旅 -- computed watch

    vue踩坑之旅 -- computed watch 经常在使用vue初始化组件时,会报一些莫名其妙的错误,或者,数据明明有数据,确还是拿不到,这是多么痛苦而又令人忍不住抓耳挠腮,捶胸顿足啊 技术点 v ...

  6. Vue + TypeScript 踩坑总结

    vue 和 TypeScript 结合的情况下,很多写法和我们平时的写法都不太一样,这里总结我项目开发过程中遇到的问题和问题的解决方案 有些问题可能还没解决,欢迎各位大佬给与提点. 另外,使用本文前可 ...

  7. echart 新手踩坑

    仪表盘踩坑 我采用的是单文件引入的方式来加载echarts图标也可以使用配置等方式详情参考文档,如果同学们要做出更加丰富的样式请参考文档配置手册配置手册:http://echarts.baidu.co ...

  8. Spark踩坑记——Spark Streaming+Kafka

    [TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...

  9. Spark踩坑记——数据库(Hbase+Mysql)

    [TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...

  10. 【踩坑速记】二次依赖?android studio编译运行各种踩坑解决方案,杜绝弯路,总有你想要的~

    这篇博客,只是把自己在开发中经常遇到的打包编译问题以及解决方案给大家稍微分享一下,不求吸睛,但求有用. 1.大家都知道我们常常会遇到dex超出方法数的问题,所以很多人都会采用android.suppo ...

随机推荐

  1. C#中的MySqlHelper工具类及使用方法

    工具类 工具类转自C# MysqlHelper C#连接mysql数据库类库全,代码如下: using MySql.Data.MySqlClient; using System; using Syst ...

  2. python queue join task_done的概念及实例解析

    一 概念 Queue.task_done() 在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号 Queue.join() 实际上意味着等到队列为空,再执行别的 ...

  3. 01.Android线程池实践基础

    目录介绍 01.实际开发问题 02.线程池的优势 03.ThreadPoolExecutor参数 04.ThreadPoolExecutor使用 05.线程池执行流程 06.四种线程池类 07.exe ...

  4. L7结合Turf.js实现空间分析与数据可视化

    1. 概述 AntV L7 是蚂蚁集团 AntV 数据可视化团队推出的基于 WebGL 的开源大规模地理空间数据可视分析引擎,其特点是通过简单的代码进行配置,即可在前端网页中绘制精美的地图以及相关的图 ...

  5. 记录--Uniapp + TypeScript 配置文档

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 0 目标 使用 uniapp  + TypeScript 为基础栈进行小程序开发 uniapp 是一个使用 Vue.js 开发所有前端应用 ...

  6. 开发必会系列:为什么要用spring

    Spring是于2003 年兴起的一个轻量级的Java 开发框架,开源的,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中 ...

  7. css实现按钮点击水波纹效果和两边扩散效果

    废话少说,先上代码了,复制到html中即可使用 点击查看代码 <!DOCTYPE html> <html lang="en"> <head> & ...

  8. KingbaseES V8R6 运维案例 --flashback drop table

    一.KingbaseES V8R6 flashback drop table介绍 使用FLASHBACK删除和恢复表 删除表时,数据库不会立即删除与该表关联的空间.数据库重命名表,并将其和任何关联的对 ...

  9. KingbaseES 咨询锁

    传统的事务性锁,读/写会自动加锁,读/写完成后会自动解锁(加解锁机制在细节上复杂),这是一种隐式的锁机制.对于加锁后的并发控制,也就是默认的写不阻塞读,是通过MVCC机制解决的.这种锁完全不需要人为干 ...

  10. React组件封装:文字、表情评论框

    1.需求描述 根据项目需求,采用Antd组件库需要封装一个评论框,具有以下功能: 支持文字输入 支持常用表情包选择 支持发布评论 支持自定义表情包 2.封装代码 ./InputComment.tsx ...