vue+elementUI中使用Echarts之饼图问题

 更新时间:2023年10月24日 09:28:40   作者:橘哥哥  
这篇文章主要介绍了vue+elementUI中使用Echarts之饼图问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

vue elementUI使用Echarts之饼图

实现效果如图

老规矩先创建占位子的div

<div id="pieReport" style="width: 400px;height: 300px;"></div>

然后引入Echarts,并且模拟数据

export default {
  name: "",
  data() {
    return {
      charts: "",
      opinion: ["及格人数", "未及格人数"],
      opinionData: [
        { value: 12, name: "及格人数", itemStyle: "#1ab394" },
        { value: 18, name: "未及格人数", itemStyle: "#79d2c0" }
      ]
    };
  },
}

在methods中定义方法

drawPie(id) {
      this.charts = this.$echarts.init(document.getElementById(id));
      this.charts.setOption({
        tooltip: {
          trigger: "item",
          formatter: "{a}<br/>{b}:{c} ({d}%)"
        },
        legend: {
          bottom: 10,
          left: "center",
          data: this.opinion
        },
        series: [
          {
            name: "状态",
            type: "pie",
            radius: "65%",
            center: ["50%", "50%"],
            avoidLabelOverlap: false,
            itemStyle: {
              emphasis: {
                shadowBlur: 10,
                shadowOffsetX: 0,
                shadowColor: "rgba(0, 0, 0, 0.5)"
              },
              color: function(params) {
                //自定义颜色
                var colorList = ["#1ab394", "#79d2c0"];
                return colorList[params.dataIndex];
              }
            },
            data: this.opinionData
          }
        ]
      });
    },

在mounted中调用

mounted() {
    this.$nextTick(function() {
      this.drawPie("pieReport");
    });
  }

懒得写了注释了,将就看吧

echarts饼图、柱状图、折线图 切换

最近自学了一下如何运用echarts制作各种图表,首先我是用springboot+mybatis写的后端。

TypeMapper接口中定义方法如下:

 /**
     * 查询新闻种类以及数量
     * @return
     */
    List<Map<Object,Object>> list();

配置NewsMapper.xml文件如下:

 <select id="list" resultType="java.util.Map">
      select count(*) as num,b.type_name as typeName  from t_news a,t_type b where a.type_id=b.type_id group by a.type_id
 </select>

我这边写了一个连接求和查询语句,返回值类型为Map类型,接下来常规写TypeService和TypeServiceImpl,这里没什么好说的,跟TypeMapper基本一样哈,接下来写控制类NewsController,简要代码如下:

@RestController
public class TypeController {
    @Autowired
    private ITypeService typeService;
    @RequestMapping("/count")
    public List<Map<Object,Object>> list(){
        List<Map<Object, Object>> list = typeService.list();
        return list;
    }
}

这里我是通过跨域获取数据,创建一个TypeChart组件,在index.js配置好路由后,开始以下代码!!

<template>
    <div class="chart-container">
		<div id="chartPie" style="width:100%; height:550px;"></div>
	</div>
</template>
 
<script>
    export default {
        name: "Typechart",
		data() {
        	return {
        		chartPie: '',
				typeName: [],//新闻类型名称
				typeNum: [] //新闻类型数量
			}
		},
		methods: {
        	drawPieChart() {
        	    // 基于准备好的dom,初始化echarts实例
				this.chartPie = this.$echarts.init(document.getElementById("chartPie"));
				this.chartPie.setOption({
					//设置标题,副标题,以及标题位置居中
					title: {
						text: '影片统计(饼状图)',
						//subtext: '纯属虚构',
						x: 'center'
					},
					//具体点击某一项触发的样式内容
					tooltip: {
						trigger: 'item',
						formatter: "{a} <br/>{b} : {c} ({d}%)"
					},
					//左上侧分类条形符
					legend: {
						orient: 'vertical',
						left: 'left',
						//通过跨域获取数据给data赋值
						data: []
					},
					//饼状图类型以及数据源
					series: [
						{
							name: '统计数量',
							type: 'pie',
							//radius: '70%',
							//center: ['50%', '60%'],
							//通过跨域获取数据给data赋值
							data: [],
							//设置饼状图扇形区域的样式
							itemStyle: {
								emphasis: {
									shadowBlur: 10,
									shadowOffsetX: 0,
									shadowColor: 'rgba(0, 0, 0, 0.5)'
								}
							},
						}
					]
				});
			},
			//动态获取饼状图的数据
			async initData() {
			//url可以在action.js配置,我是学习期间习惯这样哈哈!!
				var url="http://localhost:9090/news/count";
				this.axios.post(url,{}).then(res=>{
					console.log(res.data);
					var getData = [];
					//先进行赋值
					console.log(res.data.length)
					//for循环赋值
					for(let i=0; i<res.data.length; i++) {
						var obj = new Object();
						obj.name = res.data[i].typeName;
						obj.value = res.data[i].num;
						getData[i] = obj;
					}
					//然后再给饼状图赋值
					this.chartPie.setOption({
						legend: {
							data: res.data.typeName,
						},
						series:[{
								data: getData,
							}]
					});
				})
        		
				
			},
			drawCharts() {
				this.drawPieChart();
			},
		},
		//页面一加载就调用方法
		mounted () {
		    //先调用这个方法赋值
        	this.initData();
        	//再调用饼状图方法
			this.drawCharts();
		}
 
    }
 
</script>
 
<style scoped>
	.chart-container {
		width: 100%;
		float: left;
	}
</style>

先说一下async的用法,它作为一个关键字放到函数前面,用于表示函数是一个异步函数,因为async就是异步的意思, 异步函数也就意味着该函数的执行不会阻塞后面代码的执行。

运行后图如下:


在这里插入图片描述

完成啦!!!

柱状图也可以根据上面的方法来写!!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解Vue2.0之去掉组件click事件的native修饰

    详解Vue2.0之去掉组件click事件的native修饰

    这篇文章主要介绍了详解Vue2.0之去掉组件click事件的native修饰,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • VUE v-for中的:key详解

    VUE v-for中的:key详解

    这篇文章主要为大家介绍了v-for中的:key,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • vue使用el-table 添加行手动填写数据和删除行及提交保存功能

    vue使用el-table 添加行手动填写数据和删除行及提交保存功能

    遇到这样的需求点击新增按钮实现下列弹窗的效果,点击添加行新增一行,点击删除进行删除行,点击提交将数据传递到后端进行保存,怎么实现的呢,下面通过实例代码给大家详细讲解,感兴趣的朋友一起看看吧
    2023-12-12
  • Vue实现自定义字段导出EXCEL的示例代码

    Vue实现自定义字段导出EXCEL的示例代码

    这篇文章主要介绍了Vue实现自定义字段导出EXCEL的示例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • Vue中使用Lodash的实现示例

    Vue中使用Lodash的实现示例

    本文主要介绍了Vue中使用Lodash的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Element plus中el-input框回车触发页面刷新问题以及解决办法

    Element plus中el-input框回车触发页面刷新问题以及解决办法

    在el-form表单组件中el-input组件输入内容后按下Enter键刷新了整个页面,下面这篇文章主要给大家介绍了关于Element plus中el-input框回车触发页面刷新问题以及解决办法,需要的朋友可以参考下
    2024-03-03
  • 一文详解Vue Router的使用和路由守卫

    一文详解Vue Router的使用和路由守卫

    Vue Router 是 Vue.js 的官方路由库,用于在 Vue 应用中实现单页面应用(SPA)的客户端路由,以下是 Vue Router 的详细介绍,包括基本概念、配置、路由导航以及高级用法,感兴趣的小伙伴跟着小编一起来看看吧
    2024-08-08
  • 如何在vuejs项目中使用md5加密密码的实现

    如何在vuejs项目中使用md5加密密码的实现

    本文主要介绍了如何在vuejs项目中使用md5加密密码的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能

    基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能

    本文讲述的是从开发一款基于Vue2x的响应式自适应轮播组件插件的一个全过程,包含发布到npm,构建自己的npm包,供下载安装使用的技巧,非常不错,具有一定的参考借鉴价值,感兴趣的朋友跟随脚本之家小编一起看看吧
    2018-05-05
  • Vue-CLI与Vuex使用方法实例分析

    Vue-CLI与Vuex使用方法实例分析

    这篇文章主要介绍了Vue-CLI与Vuex使用方法,结合实例形式分析了Vue-CLI创建项目与Vuex相关概念、使用方法及操作注意事项,需要的朋友可以参考下
    2020-01-01

最新评论