在数据可视化领域,ECharts 是一款非常流行的 JavaScript 库,它可以帮助我们轻松创建各种图表,包括水球图。水球图以其独特的 3D 效果,能够直观地展示数据的比例关系,非常适合用来展示市场份额、占比等。下面,我将一步步教你如何使用 ECharts 制作一个具有 3D 效果的水球图。
准备工作
在开始之前,请确保你已经安装了 ECharts。你可以通过以下命令进行安装:
npm install echarts --save
或者,如果你使用的是 CDN,可以直接在 HTML 文件中引入 ECharts:
<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.3.3/echarts.min.js"></script>
创建基本的水球图
首先,我们需要创建一个基本的 HTML 结构,并引入 ECharts:
<!DOCTYPE html>
<html style="height: 100%">
<head>
<meta charset="utf-8">
</head>
<body style="height: 100%; margin: 0">
<div id="container" style="height: 100%"></div>
<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.3.3/echarts.min.js"></script>
<script type="text/javascript">
// ECharts 图表初始化
var myChart = echarts.init(document.getElementById('container'));
// 配置图表选项
var option = {
// ... (后续配置项)
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
添加水球图配置
接下来,我们需要在 option 对象中添加水球图的配置。ECharts 提供了 gauge 类型的图表,可以用来创建水球图。以下是水球图的基本配置:
var option = {
series: [
{
type: 'gauge',
startAngle: 90,
endAngle: -270,
pointer: {
show: false
},
progress: {
show: true,
overlap: false,
roundCap: true,
clip: false,
itemStyle: {
color: '#3ed1fd'
},
percentage: 50 // 占比,这里以 50% 为例
},
axisLine: {
lineStyle: {
color: [[0.2, '#3ed1fd'], [0.8, '#3ed1fd'], [1, '#3ed1fd']],
width: 20
}
},
axisTick: {
show: false
},
splitLine: {
show: false
},
axisLabel: {
show: false
},
anchor: {
show: false
},
title: {
show: false
},
detail: {
valueAnimation: true,
formatter: '{value}%',
color: 'auto'
}
}
]
};
添加 3D 效果
为了给水球图添加 3D 效果,我们可以使用 ECharts 的 effectScatter 系列来实现。以下是添加 3D 效果的配置:
var option = {
series: [
{
type: 'gauge',
// ... (其他配置项)
},
{
type: 'effectScatter',
coordinateSystem: 'gauge',
zlevel: 0,
rippleEffect: {
brushType: 'stroke'
},
symbolSize: 10,
itemStyle: {
color: '#f4e925',
shadowBlur: 10,
shadowColor: '#333'
},
data: [
{
value: 50,
symbol: 'circle',
symbolSize: 30
}
]
}
]
};
完整代码
将上述代码整合到 HTML 文件中,你就可以看到一个具有 3D 效果的水球图了。以下是完整的代码:
<!DOCTYPE html>
<html style="height: 100%">
<head>
<meta charset="utf-8">
</head>
<body style="height: 100%; margin: 0">
<div id="container" style="height: 100%"></div>
<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.3.3/echarts.min.js"></script>
<script type="text/javascript">
var myChart = echarts.init(document.getElementById('container'));
var option = {
series: [
{
type: 'gauge',
startAngle: 90,
endAngle: -270,
pointer: {
show: false
},
progress: {
show: true,
overlap: false,
roundCap: true,
clip: false,
itemStyle: {
color: '#3ed1fd'
},
percentage: 50
},
axisLine: {
lineStyle: {
color: [[0.2, '#3ed1fd'], [0.8, '#3ed1fd'], [1, '#3ed1fd']],
width: 20
}
},
axisTick: {
show: false
},
splitLine: {
show: false
},
axisLabel: {
show: false
},
anchor: {
show: false
},
title: {
show: false
},
detail: {
valueAnimation: true,
formatter: '{value}%',
color: 'auto'
}
},
{
type: 'effectScatter',
coordinateSystem: 'gauge',
zlevel: 0,
rippleEffect: {
brushType: 'stroke'
},
symbolSize: 10,
itemStyle: {
color: '#f4e925',
shadowBlur: 10,
shadowColor: '#333'
},
data: [
{
value: 50,
symbol: 'circle',
symbolSize: 30
}
]
}
]
};
myChart.setOption(option);
</script>
</body>
</html>
通过以上步骤,你就可以轻松制作一个具有 3D 效果的水球图了。希望这篇文章能帮助你更好地理解 ECharts 水球图的使用方法。
