echarts 实现3D饼图
时间: 2023-05-26 09:00:58 浏览: 117
echarts制作的饼状图
4星 · 用户满意度95%
A:
要在 ECharts 中实现 3D 饼图,可以使用以下步骤:
1. 安装 ECharts
安装 ECharts 的方法有多种,可以使用 npm、yarn 或直接下载 ECharts 的压缩包等方式进行安装。
2. 创建饼图
通过 ECharts 中的 echarts.init 方法创建一个 ECharts 实例,并指定放置图表的 DOM 容器。
```js
var myChart = echarts.init(document.getElementById('container'));
```
然后,使用 ECharts 的 option 配置项来定义饼图的样式、数据等。
```js
var option = {
title: {
text: '3D 饼图示例',
subtext: '数据来自网络',
left: 'center',
},
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b}: {c} ({d}%)',
},
legend: {
orient: 'vertical',
left: 'left',
data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎'],
},
series: [
{
name: '访问来源',
type: 'pie',
radius: [30, 110],
roseType: 'area',
itemStyle: {
borderRadius: 8,
borderColor: '#fff',
borderWidth: 2,
},
label: {
show: true,
formatter: '{b}: {c} ({d}%)',
},
emphasis: {
label: {
show: true,
fontSize: '30',
fontWeight: 'bold',
},
},
data: [
{ value: 335, name: '直接访问' },
{ value: 310, name: '邮件营销' },
{ value: 234, name: '联盟广告' },
{ value: 135, name: '视频广告' },
{ value: 1548, name: '搜索引擎' },
],
},
],
};
```
3. 配置 3D 效果
要实现 3D 效果,需要通过将视角(cameraPosition)的距离设置较远,同时开启视角自动旋转(viewControl.autoRotate)。
```js
option.series[0].depth = 30;
option.series[0].height = 20;
option.series[0].center = ['50%', '50%'];
option.series[0].itemStyle.normal.borderWidth = 2;
option.series[0].itemStyle.normal.borderColor = '#fff';
option.series[0].labelLine = {
show: true,
length: 20,
lineStyle: {
color: '#ddd',
},
};
option.series[0].emphasis.labelLine.show = true;
option.series[0].viewControl = {
autoRotate: true,
distance: 200,
};
```
最后,将 option 配置项作为参数传入 setOption 方法中,即可显示出 3D 饼图。
```js
myChart.setOption(option);
```
完整的示例代码如下:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>3D 饼图示例</title>
<script src="https://cdn.jsdelivr.net/npm/echarts@5.2.1/dist/echarts.min.js"></script>
</head>
<body>
<div id="container" style="width: 600px; height: 400px;"></div>
<script>
var myChart = echarts.init(document.getElementById('container'));
var option = {
title: {
text: '3D 饼图示例',
subtext: '数据来自网络',
left: 'center',
},
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b}: {c} ({d}%)',
},
legend: {
orient: 'vertical',
left: 'left',
data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎'],
},
series: [
{
name: '访问来源',
type: 'pie',
radius: [30, 110],
roseType: 'area',
itemStyle: {
borderRadius: 8,
borderColor: '#fff',
borderWidth: 2,
},
label: {
show: true,
formatter: '{b}: {c} ({d}%)',
},
emphasis: {
label: {
show: true,
fontSize: '30',
fontWeight: 'bold',
},
},
data: [
{ value: 335, name: '直接访问' },
{ value: 310, name: '邮件营销' },
{ value: 234, name: '联盟广告' },
{ value: 135, name: '视频广告' },
{ value: 1548, name: '搜索引擎' },
],
},
],
};
option.series[0].depth = 30;
option.series[0].height = 20;
option.series[0].center = ['50%', '50%'];
option.series[0].itemStyle.normal.borderWidth = 2;
option.series[0].itemStyle.normal.borderColor = '#fff';
option.series[0].labelLine = {
show: true,
length: 20,
lineStyle: {
color: '#ddd',
},
};
option.series[0].emphasis.labelLine.show = true;
option.series[0].viewControl = {
autoRotate: true,
distance: 200,
};
myChart.setOption(option);
</script>
</body>
</html>
```
参考资料:
- ECharts 官网:https://echarts.apache.org/zh/index.html
- ECharts 示例库:https://echarts.apache.org/examples/zh/index.html
阅读全文