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. netcore 图片缩略图

    /// <summary> /// 取小写文件名后缀 /// </summary> /// <param name="name">文件名< ...

  2. yarn install --offline 离线安装 回头试试 npm install ./package.tgz

    yarn install --offline npm pack npm install ./package.tgz 尝试了 npm-pack-all --dev-deps 也不行,太慢,等了20分钟 ...

  3. buildFast.js node.js 快速发布到gitee上,这样就不用每次点击,并且自动弹出发布页面,再点击发布,完美!

    buildFast.js node.js 快速发布到gitee上,这样就不用每次点击,并且自动弹出发布页面,再点击发布,完美! const fs = require('fs-extra'); fs.c ...

  4. etcd每个节点都存储了完整的键值对数据集,为什么扩容etcd集群仍可分散存储压力?

    etcd每个节点都存储了完整的键值对数据集,这主要是为了确保数据的一致性和高可用性.在这种设计下,任何一个节点都可以处理读取请求,并在本地提供数据,从而无需跨节点通信.这种冗余的数据存储方式也增加了系 ...

  5. c语言运算符优先级实例解析

    壹:    对于优先级:算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符.逻辑运算符中"逻辑非 !"除外.这是程序员总结出来的最快的学习方式. 可在实战 ...

  6. day01-SpringBoot基本介绍

    SpringBoot基本介绍 1.SpringBoot是什么? 官网地址:https://spring.io/projects/spring-boot 学习文档:https://docs.spring ...

  7. 开源推荐|简洁且强大的开源堡垒机OneTerm

    在运维的日常工作中,登陆服务器操作不可避免,为了更安全的管控服务器,但凡有点规模的公司都会上线堡垒机系统,堡垒机能够做到事前授权.事中监控.事后审计,同时也可以满足等保合规要求.提到堡垒机,大伙第一时 ...

  8. struts2-66漏洞复现

    Strut2-66漏洞从搭建到复现到原理 0x0 创建JavaEE环境 使用idea创建JavaEE项目,添加Strut2的依赖 点击右上角创建新项目 下一步,依赖项只选择一个Servlet就行了,版 ...

  9. EVENG导入Win7镜像以后可以启动无法VNC打开

    原因:未安装支持 eveng 的 vncviewer 解决方法:下载 vncviewer: https://pan.eve-ng.cn/Tools/EVE-NG/Client/EVE-NG-Win-C ...

  10. KingbaseES 优化之sql优化方法

    金仓数据库在sql层面提供了多种优化手段,但是这些的前提时需要保证我们的统计信息准确,优化器已经在正确信息下选择了它认为的最优的执行计划, 优化手段包括 •使用索引 索引解决的问题用于在进行表的扫描时 ...