Vue+Echarts: 实现饼状图的详细教程

简介: Vue+Echarts: 实现饼状图的详细教程

1、安装 ECharts 首先,你需要在项目中安装 ECharts。你可以通过在终端中运行以下命令来安装 ECharts

npm install echarts --save

2、创建一个 ECharts 实例 在 Vue 组件中,你可以通过引入 ECharts 库,然后在组件中使用 echarts.init() 方法来创建一个 ECharts 实例。这个实例将被用来配置和渲染图表。

1. import echarts from 'echarts'
2. 
3. export default {
4. data() {
5. return {
6. chart: null,
7. chartData: {
8. // 这里是你要绘制的饼图数据
9.       }
10.     }
11.   },
12. mounted() {
13. // 创建一个 ECharts 实例
14. this.chart = echarts.init(this.$refs.chart)
15. // 在 ECharts 实例中配置图表
16. this.chart.setOption(this.getOption())
17.   },
18. methods: {
19. getOption() {
20. return {
21. // 这里是你的 ECharts 配置项
22.       }
23.     }
24.   }
25. }

3、配置 ECharts 在 getOption 方法中,你可以为饼图配置 ECharts 配置项。例如,你可以设置饼图的颜色、大小、数据等。

1. methods: {
2. getOption() {
3. return {
4. title: {
5. text: '饼图标题',
6. subtext: '饼图副标题',
7. left: 'center'
8.         },
9. tooltip: {
10. trigger: 'item',
11. formatter: '{a} <br/>{b}: {c} ({d}%)'
12.         },
13. legend: {
14. orient: 'vertical',
15. left: 10,
16. data: ['数据1', '数据2', '数据3', '数据4', '数据5']
17.         },
18. series: [
19.           {
20. name: '饼图名称',
21. type: 'pie',
22. radius: ['50%', '70%'],
23. avoidLabelOverlap: false,
24. label: {
25. show: false,
26. position: 'center'
27.             },
28. emphasis: {
29. label: {
30. show: true,
31. fontSize: '30',
32. fontWeight: 'bold'
33.               }
34.             },
35. labelLine: {
36. show: false
37.             },
38. data: [
39.               {value: 335, name: '数据1'},
40.               {value: 310, name: '数据2'},
41.               {value: 234, name: '数据3'},
42.               {value: 135, name: '数据4'},
43.               {value: 1548, name: '数据5'}
44.             ]
45.           }
46.         ]
47.       }
48.     }
49.   }

4. 在模板中绘制饼图 最后,在 Vue 组件的模板中,你需要添加一个用来呈现饼图的 div 元素,并通过 ref 属性引用它。然后,你可以在模板中使用这个 ref 来调用 ECharts 实例。

1. <template>
2. <div ref="chart" style="width: 100%; height: 400px;"></div>
3. </template>

5、写法有很多种,附上我的写法

1. <template>
2. <div>
3. <div class="content-inner chart-style" ref="chart"></div>
4. </div>
5. </template>
6. 
7. <script>
8. import echarts from "echarts";
9. 
10. export default {
11. name: "echartsTool",
12. props: {
13. charData: {
14. type: Object
15.     },
16. charTitle: {
17. type: String
18.     }
19.   },
20. data() {
21. return {
22. chart: null,
23. pieData: []
24.     };
25.   },
26. watch: {
27. charData: {
28. handler() {
29. this.renderChart();
30.       },
31. deep: true
32.     }
33.   },
34. mounted() {
35. // 在组件mounted时绑定resize事件,当窗口大小发生变化时自动调整图表大小
36. window.addEventListener("resize", this.handleResize);
37. // 创建Echarts实例并绘制饼状图
38. this.creatCharts();
39.   },
40. beforeDestroy() {
41. // 在组件销毁前解绑resize事件
42. window.removeEventListener("resize", this.handleResize);
43.   },
44. methods: {
45. async creatCharts() {
46. this.renderChart();
47.     },
48. // 处理resize事件,调整图表大小
49. handleResize() {
50. if (this.chart) {
51. // 调用Echarts实例的resize方法,重新绘制图表
52. this.chart.resize();
53.       }
54.     },
55. renderChart() {
56. const chart = echarts.init(this.$refs.chart);
57. let option;
58. if (this.charData.length > 0) {
59.         option = {
60. title: {
61. text: this.charTitle,
62. textStyle: {
63. fontWeight: "normal",
64. fontSize: 16
65.             },
66. left: "center"
67.           },
68. color: ["#6395F9", "#62DAAB", "#657798", "#F6C022", "#E96C5B", "#74CBED", "#9968BD", "#FF9D4E", "#299998"],
69. tooltip: {
70. trigger: "item",
71. formatter: "{b}:{d}%"
72.           },
73. series: [
74.             {
75. type: "pie",
76. radius: ["60%", "90%"],
77. top: 6,
78. bottom: 25,
79. left: "center",
80. textStyle: {
81. color: "#999",
82. fontSize: "12px"
83.               },
84. itemWidth: 6,
85. itemHeight: 6,
86. label: {
87. show: true,
88. formatter: "{b}: {d}%"
89.               },
90. data: this.charData
91.             }
92.           ]
93.         };
94.       } else {
95.         option = {
96. title: {
97. text: this.charTitle,
98. textStyle: {
99. fontWeight: "normal",
100. fontSize: 16
101.             },
102. left: "center"
103.           },
104. tooltip: {
105. trigger: "none"
106.           },
107. color: ["#d3d3d3"],
108. series: [
109.             {
110. type: "pie",
111. radius: ["60%", "90%"],
112. left: "center",
113. label: {
114. show: true,
115. formatter: "{b}"
116.               },
117. data: [{ value: 1, name: "暂无数据" }]
118.             }
119.           ]
120.         };
121.       }
122. 
123.       chart.setOption(option);
124. this.chart = chart;
125.     }
126.   }
127. };
128. </script>

大致效果

如果需要饼图自适应浏览器缩放比例的话,可以参考我的这篇文章 https://blog.csdn.net/qijing19991210/article/details/129379925

目录
相关文章
|
24天前
|
JSON JavaScript 定位技术
vue中使用echarts实现省市地图绘制,根据数据显示省市天气图标及温度信息
vue中使用echarts实现省市地图绘制,根据数据显示省市天气图标及温度信息
107 1
|
2月前
|
Web App开发 数据可视化 前端开发
ECharts 教程
ECharts 是一个使用 JavaScript 实现的开源可视化库,涵盖各行业图表,满足各种需求。
74 10
|
24天前
|
JavaScript
vue中使用echarts绘制双Y轴图表时,刻度没有对齐的两种解决方法
vue中使用echarts绘制双Y轴图表时,刻度没有对齐的两种解决方法
150 0
|
24天前
|
JSON JavaScript 前端开发
vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果
vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果
331 0
|
24天前
|
JSON JavaScript 定位技术
Vue结合ECharts绘制省市地图:数据驱动区域颜色展示,支持省市下钻与经纬度打点功能
Vue结合ECharts绘制省市地图:数据驱动区域颜色展示,支持省市下钻与经纬度打点功能
60 0
|
3月前
|
JavaScript
echarts在Vue项目中的实际运用效果图
这篇文章展示了在Vue项目中使用ECharts图表库的步骤,包括安装ECharts、引入到Vue组件、创建图表实例以及通过watch监听数据变化来实现实时数据更新的方法。
echarts在Vue项目中的实际运用效果图
|
3月前
|
JavaScript 数据可视化 搜索推荐
在Vue项目中使用Echarts图表库
这篇文章介绍了如何在Vue项目中集成ECharts图表库,并通过具体的代码示例展示了如何创建并配置一个饼图来展示数据。
43 0
在Vue项目中使用Echarts图表库
|
3月前
|
XML SQL JavaScript
在vue页面引入echarts,图表的数据来自数据库 springboot+mybatis+vue+elementui+echarts实现图表的制作
这篇文章介绍了如何在Vue页面中结合SpringBoot、MyBatis、ElementUI和ECharts,实现从数据库获取数据并展示为图表的过程,包括前端和后端的代码实现以及遇到的问题和解决方法。
在vue页面引入echarts,图表的数据来自数据库 springboot+mybatis+vue+elementui+echarts实现图表的制作
|
3月前
|
JavaScript
Echarts——VUE中如何给echarts绑定click事件
Echarts——VUE中如何给echarts绑定click事件
166 1
|
3月前
|
JavaScript
Echarts——VUE中非根节点时不显示图表也无报错
Echarts——VUE中非根节点时不显示图表也无报错
37 1