ECharts 高级功能
# ECharts 高级功能详解
ECharts 提供了许多高级功能来增强图表的表现力和交互性,例如自定义样式、数据视图与导出功能、数据缩放功能等。通过这些功能,开发者可以创建更加专业和功能丰富的图表。
# 1. 自定义样式
ECharts 允许通过 itemStyle
、lineStyle
等配置项来自定义图表元素的样式。这些配置项可以用来修改图表的颜色、宽度、边框样式等属性,从而实现个性化的视觉效果。
# 1.1 itemStyle 自定义图表元素样式
itemStyle
是 ECharts 中常用的样式配置项,可以应用于柱状图、折线图、散点图等多个图表类型。它可以配置颜色、阴影、透明度等属性。
const option = {
series: [{
name: '销量', // 数据系列名称
type: 'bar', // 图表类型:柱状图
data: [5, 20, 36, 10, 10, 20], // 数据系列数据
itemStyle: {
color: '#a83232', // 自定义柱状图的颜色
borderColor: '#000', // 设置柱状图边框颜色
borderWidth: 2, // 设置柱状图边框宽度
borderType: 'solid', // 设置边框类型,支持'solid', 'dashed', 'dotted'
shadowBlur: 10, // 设置阴影模糊度
shadowColor: 'rgba(0, 0, 0, 0.5)', // 设置阴影颜色
shadowOffsetX: 5, // 设置阴影X轴偏移
shadowOffsetY: 5 // 设置阴影Y轴偏移
}
}]
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 1.2 lineStyle 自定义折线图样式
lineStyle
用于自定义折线图的线条样式,包括线条颜色、宽度、类型等。
const option = {
series: [{
name: '趋势', // 数据系列名称
type: 'line', // 图表类型:折线图
data: [820, 932, 901, 934, 1290, 1330, 1320], // 数据系列数据
lineStyle: {
color: '#32a852', // 自定义折线颜色
width: 3, // 设置折线宽度
type: 'dashed', // 设置折线类型,支持'solid', 'dashed', 'dotted'
shadowBlur: 5, // 设置阴影模糊度
shadowColor: 'rgba(0, 0, 0, 0.5)', // 设置阴影颜色
shadowOffsetX: 3, // 设置阴影X轴偏移
shadowOffsetY: 3 // 设置阴影Y轴偏移
}
}]
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 2. 数据视图与导出
ECharts 提供了丰富的工具栏功能,可以让用户导出图表、查看数据等。这些功能可以通过 toolbox
组件来实现,toolbox
组件可以包含多个工具,如保存图表为图片、查看数据视图、数据区域缩放、还原等。
# 2.1 toolbox 配置项
toolbox
提供了图表操作的快捷工具,如导出图片、查看数据、数据缩放等。通过配置 feature
属性,可以开启相应的功能。
const option = {
toolbox: {
feature: {
saveAsImage: {
type: 'png', // 导出图片类型,支持 'png' 和 'jpeg'
name: 'chart', // 导出图片的名称
backgroundColor: '#fff', // 图片背景颜色
title: '保存为图片' // 保存按钮的标题
},
dataView: {
show: true, // 是否显示数据视图
readOnly: false, // 数据视图是否为只读
title: '数据视图', // 数据视图按钮的标题
lang: ['数据视图', '关闭', '刷新'], // 数据视图中的语言
optionToContent: function(opt) {
const series = opt.series[0].data;
let table = '<table style="width:100%;text-align:center"><tbody>';
series.forEach((data, index) => {
table += `<tr><td>项${index + 1}</td><td>${data}</td></tr>`;
});
table += '</tbody></table>';
return table;
} // 自定义数据视图的内容
},
restore: { title: '还原' }, // 还原图表初始状态
dataZoom: { title: '区域缩放' }, // 区域缩放工具
magicType: { type: ['line', 'bar'], title: { line: '折线图', bar: '柱状图' } } // 动态类型切换
}
},
series: [{
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}]
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 2.2 工具栏功能详解
saveAsImage
: 将图表保存为图片,支持png
和jpeg
格式。dataView
: 查看图表的原始数据,支持编辑和刷新。restore
: 还原图表的初始状态。dataZoom
: 启用数据区域缩放功能。magicType
: 切换图表类型,如从折线图切换为柱状图。
# 3. 数据缩放
dataZoom
组件允许用户在图表中选择和缩放特定区域的数据,适用于时间序列数据和大数据量的显示。它支持滑动条和内部缩放两种形式。
# 3.1 dataZoom 组件配置
dataZoom
组件可以配置为滑动条(slider
)或内部缩放(inside
),用于控制图表数据的显示范围。
const option = {
dataZoom: [{
type: 'slider', // 滑动条缩放
start: 0, // 缩放开始位置(百分比)
end: 100, // 缩放结束位置(百分比)
handleSize: '100%', // 控制手柄的尺寸
handleIcon: 'path://M 2,2 L 12,2 L 12,12 L 2,12 Z', // 自定义控制手柄的图标
handleStyle: {
color: '#a83232', // 手柄颜色
borderColor: '#000', // 手柄边框颜色
borderWidth: 2 // 手柄边框宽度
}
}, {
type: 'inside', // 内部缩放
start: 0, // 缩放开始位置
end: 100 // 缩放结束位置
}],
xAxis: {
type: 'category', // 类目轴
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] // X轴数据
},
yAxis: {
type: 'value' // 数值轴
},
series: [{
type: 'line', // 折线图
data: [820, 932, 901, 934, 1290, 1330, 1320] // 数据系列
}]
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 3.2 dataZoom 组件参数说明
type
:dataZoom
的类型,slider
为滑动条,inside
为内部缩放。start
和end
: 定义缩放的起始和结束位置,值为 0-100 的百分比。handleSize
: 滑动条手柄的尺寸,可以是像素值或百分比。handleIcon
: 自定义手柄的形状,支持 SVG 路径。handleStyle
: 手柄的样式配置项,支持颜色、边框、阴影等。
总结
- 自定义样式:通过
itemStyle
和lineStyle
等配置项,开发者可以灵活地调整图表元素的样式,以适应不同的设计需求。 - 数据视图与导出:
toolbox
提供了丰富的功能,允许用户导出图表、查看数据、还原初始状态、进行数据区域缩放等操作,增强了图表的交互性。 - 数据缩放:
dataZoom
组件可以为图表添加缩放功能,适用于时间序列数据和大数据量的场景,使用户能够专注于特定的数据范围。
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08