前言
相信不少同学在使用 Echarts 图表时避免不了要调整一些配置项,但对于很多初学者来说,面对 Echarts 众多的配置项可能会感到无从下手。别担心,本文将带大家全面了解 Echarts 图表常用的配置项,从基础到进阶,一步步揭开数据可视化的神秘面纱,让你轻松驾驭 Echarts。
一、xAxis/yAxis 相关
1.1 修改x/y轴线及字体颜色
在 x/y
轴中定义 axisLine
配置项进行修改即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
xAxis: {
axisLine: {
lineStyle: {
color: "blue"
}
},
},
yAxis: {
axisLine: {
lineStyle: {
color: "blue",
}
},
},
}
实现效果
1.2 x/y轴添加描述文字
在 x/y
轴加一个 name
属性即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
yAxis: {
name: "(万辆)",
},
}
实现效果
1.3 去掉背景分隔线
在 y
轴中定义 splitLine
配置项,将 show
设置为 false
即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
yAxis: {
splitLine: {
show: false
},
},
}
实现效果
1.4 设置x/y轴文字倾斜
在 x/y
轴中加上 axisLabel
配置项,加上 rotate
属性设置需要的角度值即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
xAxis: {
axisLabel: {
rotate: 40,
},
},
}
实现效果
1.5 x轴字数过多展示省略号
在 x
轴中加上 axisLabel
配置项,使用 formatter
方法格式化处理即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
xAxis: {
axisLabel: {
formatter: function (value) {
if (value.length > 4) {
return `${value.slice(0, 4)}...`;
}
return value;
},
},
},
}
实现效果
1.6 数据量大时为x/y轴添加滚动条
在 option
中定义 dataZoom
配置项设置其中属性即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
dataZoom: [
{
type: 'slider',//类型
show: true,//显示
yAxisIndex: [0],//使用y轴的index,默认值为0
start: 0, //数据窗口范围的起始百分比
end: 100//数据窗口范围的结束百分比
},
],
}
实现效果
1.7 隐藏x/y轴刻度线
在 x/y
轴中定义 axisTick
配置项设置 show
属性即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
xAxis: {
axisTick: {
show: false,
},
},
}
实现效果
1.8 显示x/y坐标轴轴线
在 x/y
轴中定义 axisLine
配置项设置 show
属性即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
yAxis: {
axisLine: {
show: false,
},
},
}
实现效果
1.9 y轴坐标不为小数
在 y
轴中定义 minInterval
配置项,将其设置为 1
即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
yAxis: {
minInterval: 1, // 设置成1保证坐标轴分割刻度显示成整数。
},
}
实现效果
1.10 数据起点从x/y轴原点(0刻度)开始
在 x/y
轴中定义 boundaryGap
配置项,将其设置为 false
即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
xAxis: {
type: "category",
data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
boundaryGap: false
},
}
实现效果
1.11 x/y轴标记画线
在 series
轴中定义 markLine
配置项,定义画线的规则即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
series: [
{
markLine: {
data: [
{
xAxis: "Indonesia",
lineStyle: { color: "blue", type: "solid" },
},
{
xAxis: "China",
lineStyle: { color: "blue", type: "solid" },
},
],
symbol: "none", // 标线两端的标记类型,可以是一个数组分别指定两端,也可以是单个统一指定
label: { show: false },
},
data: [820, 932, 901, 934, 1290, 1330, 1320],
type: "line",
},
],
};
实现效果
1.12 y轴根据数据动态调整范围(不从 0 开始)
在 yAxis
轴中添加 min
和 max
配置项,定义规则从而更直观地展示数据的变化。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
xAxis: {
type: "category",
data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
},
yAxis: {
type: "value",
min: (value) => Math.max(0, value.min - 5), // 最小值下探 5 个单位并确保最小值不小于 0
max: (value) => value.max + 5, // 最大值上探 5 个单位
},
label: {
show: true,
},
series: [
{
data: [83, 88, 89, 87, 90, 85, 95, 92],
type: "bar",
},
],
};
实现效果
二、series 相关
2.1 修改图形颜色
在 series
中定义 color
配置项设置颜色即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
series: [
{
type: "bar",
color: ["rgb(40,135,193)"],
},
{
type: "bar",
color: ["rgb(255,230,15)"],
},
],
}
实现效果
2.2 设置柱图的宽度
在 series
中定义 barWidth
配置项设置需要的值即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
series: [
{type: 'bar', barWidth: 10},
{type: 'bar', barWidth: 18}
]
}
实现效果
2.3 饼图展示数值及占比
在 series
中定义 itemStyle
配置项,加上 itemStyle
属性,通过 normal
定义图形的默认状态即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
series: [
itemStyle: {
normal: {
label: {
show: true,
formatter: '{b} : {c} ({d}%)', //b:名称;c:值;d:所占百分比
},
}
},
]
}
实现效果
2.4 饼图指示线显隐
在 series
中定义 labelLine
配置项设置 show
属性为 true
或 false
即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
series: [{
labelLine: {
show: false,
},
}]
}
实现效果
2.5 柱图顶端改成圆弧形
在 series
中定义 itemStyle
配置项设置 borderRadius
属性即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
series: [{
type: "bar",
itemStyle:{
barBorderRadius:[20,20,0,0] //从左至右依次为上左、上右、下右、下左
},
}]
}
实现效果
2.6 调整饼图的位置
在 series
中定义 center
配置调整需要的值即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
series: [{
center: ["30%", "60%"],//水平 垂直
}]
}
实现效果
2.7 饼图描述过长显示不全
在 series
中定义 label
配置项,使用 formatter
方法格式化处理即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
series: [
{
label: {
show: true,
formatter(v) {
let text = v.name;
return text.length < 4 ? text : `${text.slice(0, 4)}\n${text.slice(4)}`;
},
},
},
],
};
实现效果
2.8 柱状图数值显示在柱子上
在 series
中定义 label
配置项,将 show
属性设置为 true
即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
series: [
{
label: {
show: true,
// formatter: '{b}\n{c}%', //如果需要单位加上这行代码即可
},
},
],
};
实现效果
2.9 设置面积图渐变色
在 series
中定义 areaStyle
配置项,通过 color
属性设置颜色即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
series: [
{
type: "line",
smooth: true, //面积图是否改成弧形状
lineStyle: {
width: 2, //外边线宽度
color: "rgb(124,255,255)", //外边线颜色
},
areaStyle: {
//区域填充渐变颜色
color: {
type: "linear",
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0,
color: "rgba(124,255,255, 0.3)", //0%处颜色
},
{
offset: 1,
color: "rgba(44,56,74, 1)", //100%处颜色
},
],
},
},
},
],
};
实现效果
2.10 饼图数据太小不显示
在 series
中定义 minAngle
配置项,设置扇区最小角度即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
series: [
{
minAngle: 5,
},
],
};
实现效果
2.11 标签显示的位置
在 series
中定义 label
配置项,通过 position
属性设置标签位置即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
series: [
{
markLine: {
data: [
{
xAxis: "Indonesia",
label: {
position: "middle",
},
},
{
xAxis: "USABNMK",
label: {
position: "insideEndTop",
},
},
{
xAxis: "India",
label: {
position: "end",
},
},
{
xAxis: "China",
label: {
position: "insideStartTop",
},
},
],
},
data: [820, 932, 901, 934, 1290, 1330, 1320],
type: "line",
},
],
};
实现效果
2.12 控制图表数据的图形符号是否显示
在 series
中定义 showSymbol
配置项,通过 true
和 false
控制即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
series: [
showSymbol: false,
],
};
实现效果
2.13 数据不堆叠
在 series
中定义 stack
配置项设置其属性值即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
series: [
{
type: "line",
stack: "Total", // 设置stack实现数据堆叠效果
data: [120, 1032, 101, 134, 90, 230, 210],
},
{
type: "line",
stack: "Total", // 设置stack实现数据堆叠效果
data: [220, 182, 191, 234, 290, 330, 310],
},
],
};
实现效果
三、tooltip 相关
3.1 鼠标移入图表屏幕抖动
出现该问题是因为使用 tooltip
配置项后,鼠标悬浮事件频繁触发导致的,解决办法就是在 tooltip
中加上 transitionDuration
属性将值设置为 0
即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
tooltip: {
transitionDuration:0,//让提示框跟随鼠标提示
},
}
实现效果
3.2 提示框浮层的背景颜色
在 option
中定义 tooltip
配置项,通过 backgroundColor
属性设置颜色即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
tooltip: {
backgroundColor: "black",
},
}
实现效果
3.3 提示框浮层内边距
在 option
中定义 tooltip
配置项,通过 padding
属性边距即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
tooltip: {
padding: [
10, // 上
20, // 右
10, // 下
20, // 左
],
},
}
实现效果
3.4 手动触发提示框信息
-
定义
showTip
函数,接收seriesIndex
和dataIndex
参数,用于指定要显示的提示框对应的系列和数据项索引,调用myChart.dispatchAction
触发显示提示框; -
图表加载后,用
setTimeout
立即显示首个系列seriesIndex: 0
第二个数据项dataIndex: 1
,对应Tue
的提示框; -
监听鼠标移出图表事件
myChart.getZr().on("globalout", ...)
,移出时用setTimeout
再调用showTip
显示相同提示框。若对该配置项感兴趣『点此』获取更多详细内容。
核心代码
// 手动触发显示tooltip
const showTip = (seriesIndex, dataIndex) => {
myChart.dispatchAction({
type: "showTip",
seriesIndex: seriesIndex,
dataIndex: dataIndex,
});
};
// 初始显示提示
setTimeout(() => {
showTip(0, 1); // dataIndex对应 'Tue'
}, 0);
// 在鼠标移开时触发 showTip
myChart.getZr().on("globalout", () => {
setTimeout(() => {
showTip(0, 1); // 对应 'Tue' 对应的数据项索引
}, 0);
});
完整代码
<template>
<div class="chartBox">
<div id="pillarsChart" :style="{ width: '100%', height: '100%' }"></div>
</div>
</template>
<script>
export default {
mounted() {
this.pillarsEcharts();
},
methods: {
pillarsEcharts() {
var myChart = this.$echarts.init(document.getElementById("pillarsChart"));
let option = {
tooltip: {
trigger: "axis",
},
xAxis: {
type: "category",
data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
},
yAxis: {
type: "value",
},
series: [
{
data: [150, 230, 224, 218, 135, 147, 260],
type: "line",
},
],
};
// 手动触发显示tooltip
const showTip = (seriesIndex, dataIndex) => {
myChart.dispatchAction({
type: "showTip",
seriesIndex: seriesIndex,
dataIndex: dataIndex,
});
};
// 初始显示提示
setTimeout(() => {
showTip(0, 1); // dataIndex对应 'Tue'
}, 0);
// 在鼠标移开时触发 showTip
myChart.getZr().on("globalout", () => {
setTimeout(() => {
showTip(0, 1); // 对应 'Tue' 对应的数据项索引
}, 0);
});
myChart.setOption(option);
window.addEventListener("resize", function() {
myChart.resize();
});
},
},
};
</script>
实现效果
四、title 相关
4.1 饼图中间添加文字描述
在 option
中定义 title
和 graphic
配置项,调整需要展示的值即可。若对该配置项感兴趣『点此』获取更多详细内容。
title: {
text: "80.5%", //展示值
left: "center",
top: "50%",
},
graphic: {
type: "text",
left: "center",
top: "44%",
style: {
text: "处罚率", //展示值
},
},
实现效果
4.2 图表无数据显示“暂无数据”字样
在 option
中定义 title
配置项,通过 show
属性判断是否显示标题,如果数组不为空,则 show
为 false
,表示不显示标题,反之显示标题。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
title: {
show: !dataList.length, // 如果 dataList 为空,则显示标题
text: "暂无数据", // 显示的文本
left: "center", // 水平方向居中
top: "center", // 垂直方向居中
},
}
实现效果
五、legend 相关
5.1 修改图例文字颜色
在 legend
中定义 textStyle
配置项,加上 color
属性设置颜色即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
legend: {
textStyle: {
color: 'white'
},
},
}
实现效果
5.2 修改图例的图标形状
在 legend
中定义 icon
配置项,选择符合项目需求的类型即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
legend: {
icon: "triangle", //控制形状,其中包括 circle,rect,roundRect,triangle,diamond,pin,arrow,none
},
}
实现效果
六、grid 相关
6.1 调整图表与图例的间距
在 option
中定义 grid
配置项设置需要的值即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
grid: {
left: '5%',
right: '6%',
bottom: '3%',
top: "20%"
},
}
实现效果
6.2 调整图表网格的边框线宽
在 option
中定义 grid
配置项,通过 borderWidth
设置需要的值即可。若对该配置项感兴趣『点此』获取更多详细内容。
注意: 此配置项生效的前提是,设置了 show: true
。
let option = {
grid: {
show: true,
borderWidth: 10,
},
}
实现效果
七、其它
7.1 设置图表背景色
在 option
中定义 backgroundColor
配置项设置颜色即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
backgroundColor: ["rgb(64,158,255)"],
}
实现效果
7.2 图表添加下载功能
在 option
中定义 toolbox
配置项即可。若对该配置项感兴趣『点此』获取更多详细内容。
let option = {
toolbox: {
feature: {
saveAsImage: {
title: "保存为图片", //标题可自行调整
type: "png", //下载为png格式
},
},
},
}
实现效果
7.3 图表切换全屏
在 option
中定义 toolbox
配置项即可。若对该配置项感兴趣『点此』获取更多详细内容。
- 如果你用的是
svg
图片,复制svg
标签中d
的属性值(d=""
,引号中的内容拿出来)粘到icon:"path://"
后面即可; - 如果你用的是外链图片,需要这样写:
icon:'image://https://s1.ax1x.com/2022/04/19/L0GpM4.png'
,相当于是image://
+ “外链地址”。
let option = {
toolbox: {
show: true,
feature: {
myFull: {
show: true,
title: "全屏查看",
icon:
"path://M708.2 792.2l-97.5-97.7c-11.6-11.6-11.6-30.3 0-41.9l41.9-41.9c11.6-11.6 30.3-11.6 41.9 0l97.6 97.6 85.3-85.3c11.6-11.6 30.3-11.6 41.9-0.1 5.6 5.6 8.7 13.1 8.7 21v254.4c0 16.4-13.3 29.6-29.6 29.6H643.9c-16.4 0-29.6-13.3-29.6-29.6 0-7.8 3.1-15.4 8.6-20.9l85.3-85.3v0.1zM234 708.1l97.5-97.6c11.6-11.6 30.3-11.6 41.9 0l41.9 41.9c11.6 11.6 11.6 30.3 0 41.9l-97.6 97.6 85.3 85.3c11.6 11.6 11.5 30.4-0.1 41.9-5.6 5.5-13.1 8.6-20.9 8.6H127.7c-16.4 0-29.6-13.3-29.6-29.6V643.7c0-16.4 13.3-29.6 29.6-29.6 7.9 0 15.4 3.1 21 8.7l85.3 85.3zM792 318l-97.6 97.6c-11.6 11.6-30.3 11.6-41.9 0l-41.8-41.8c-11.6-11.6-11.6-30.3 0-41.9l97.6-97.6L623 149c-11.6-11.6-11.5-30.4 0.1-41.9 5.6-5.5 13.1-8.6 20.9-8.6h254.4c16.4 0 29.6 13.3 29.6 29.6v254.4c0 16.4-13.3 29.6-29.6 29.6-7.9 0-15.4-3.1-21-8.7L792 318z m-474.3-83.9l97.6 97.6c11.6 11.6 11.6 30.3 0 41.9l-42 42c-11.6 11.6-30.3 11.6-41.9 0L233.8 318l-85.3 85.3c-11.6 11.6-30.4 11.5-41.9-0.1-5.6-5.6-8.7-13.1-8.6-21V127.8c0-16.4 13.3-29.6 29.6-29.6H382c16.4 0 29.6 13.3 29.6 29.6 0 7.9-3.1 15.4-8.7 21l-85.2 85.3z",
onclick: () => {
let element = document.getElementById("straight");
// 浏览器兼容
if (element.requestFullScreen) {
element.requestFullScreen();
} else if (element.msRequestFullscreen) {
element.msRequestFullScreen();
} else if (element.webkitRequestFullScreen) {
element.webkitRequestFullScreen();
} else if (element.mozRequestFullScreen) {
element.mozRequestFullScreen();
}
// 退出全屏
if (element.requestFullScreen) {
document.exitFullscreen();
} else if (element.msRequestFullScreen) {
document.msExitFullscreen();
} else if (element.webkitRequestFullScreen) {
document.webkitCancelFullScreen();
} else if (element.mozRequestFullScreen) {
document.mozCancelFullScreen();
}
},
},
},
},
}
实现效果
7.4 图表宽高自适应
主要是通过 resize()
方法实现,核心原理是重新获取容器的尺寸信息,然后根据新的尺寸重新计算图表的布局和绘制参数,最后使用新的参数重新渲染整个图表。
<div id="columnarChart" :style="{ width: '100%', height: '100%' }"></div>
radarEcharts() {
var myChart = this.$echarts.init(document.getElementById("columnarChart"));
let option = {};
myChart.setOption(option);
window.addEventListener("resize", function() {
myChart.resize();
});
},
实现效果
相关推荐
⭐ 玩转数据可视化,从入门到精通 Echarts
⭐ 解决echarts报错Cannot read properties of null (reading ‘getAttribute‘)
⭐ 解决element标签组件切换echarts图表宽高丢失问题
⭐ 数据的跃动之美:探索ECharts动态排序柱状图的魔力
⭐ 一文带你快速上手Highcharts框架