vue 使用echarts以及环形图的运用实例 -金沙1005

vue 使用echarts以及环形图的运用实例安装echarts依赖npminstallecharts-s或者使用国内的淘宝镜像:npminstall-gcnpm–registry=https://registry.npm.taobao.org创建图表全局引入main.js//引入echartsimportechartsfrom’echarts’vue.prototype.$e…

npm install echarts -s
vue 使用echarts以及环形图的运用实例

为防止网络爬虫,请关注公众号回复”口令”

激活idea 激活clion
datagrip dataspell
dotcover dotmemory
dottrace goland
phpstorm pycharm
resharper reshac
rider rubymine
webstorm 全家桶
或者使用国内的淘宝镜像:
npm install -g cnpm --registry=https://registry.npm.taobao.org

全局引入

main.js

// 引入echarts
import echarts from 'echarts'
vue.prototype.$echarts = echarts

hello.vue

export default {
  name: 'hello',
  data () {
    return {
      msg: 'welcome to your vue.js app'
    }
  },
  mounted(){
    this.drawline();
  },
  methods: {
    drawline(){
        // 基于准备好的dom,初始化echarts实例
        let mychart = this.$echarts.init(document.getelementbyid('mychart'))
        // 绘制图表
        mychart.setoption({
            title: { text: '在vue中使用echarts' },
            tooltip: {},
            xaxis: {
                data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
            },
            yaxis: {},
            series: [{
                name: '销量',
                type: 'bar',
                data: [5, 20, 36, 10, 10, 20]
            }]
        });
    }
  }
}

注意: 这里echarts初始化应在钩子函数mounted()中,这个钩子函数是在el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用

以上只是插件的柱形图,我们今天要实现的是一下环形图

 

同理引入echarts后

 

 

vue 使用echarts以及环形图的运用实例

data中定义echarts初始配置:

 // 图表配置项
      option: {
        color:['#4472c5','#ed7c30','#80ff80','#ff8096','#800080'],//配置颜色
        tooltip: {
          trigger: "item",
          formatter: "{a} 
{b} : {c} ({d}%)" }, // 图例 legend: { type: "scroll", // orient: "vertical", top: 20, left: "center", data: [], //图例数据从后台获取 textstyle: { //图例文字的样式 color: "#999",//['#4472c5','#ed7c30','#80ff80','#ff8096','#800080']不同样式 fontsize: 12 } }, // 直角坐标系内绘图网格 grid: { left: "3%", right: "4%", bottom: "30%", containlabel: true }, //图表展示数据从后台获取 series: [] }

获取后台数据并动态生成echarts需要的数据:

   methods: {
    getchartdata() {
      // 图例legend数据
      let legenddata = [];
      //this.piedata为后台返回数据
      if (this.piedata) {
        for (let i = 0; i < this.piedata[0].data.length; i  ) {
          legenddata.push(this.piedata[0].data[i].name);
        }
        this.option.legend.data = legenddata;
        // this.option.series[0].name = legenddata;
        var center;
        for (var i in this.piedata) {
          center = 100 / (2   number(i));
        }
 
        for (var i = 0; i < this.piedata.length; i  ) {
          this.option.series[i] = {
            name: this.piedata[i].name,
            type: "pie",       
            center: [center * number(i   1)   "%", "60%"],     //每个圆环图的位置,动态计算
            //第一个是内径。第二个是外径。内劲变大就是圆环
            radius: [center   "%", center   center   "%"],     //每个圆环图的大小,动态计算
            avoidlabeloverlap: false,
            label: {
              normal: {
                show: false,
                position: "center"
              },
              emphasis: {
                show: true,
                textstyle: {
                  fontsize: "30",
                  fontweight: "bold"
                }
              }
            },
            labelline: {
              normal: {
                show: false
              }
            },
            data: []
          };
          this.option.series[i].data = this.piedata[i].data;
        }
        // this.piedata.foreach((item, i) => {
        //   console.log(i);
        // });
      } else {
        this.option.legend.data = [];
        this.option.series[0].data = [];
      }
    },
    drawpie() {
      this.getchartdata();//如果配置完毕option,且不需要这一步
      //核心代码:
      // 基于准备好的dom,初始化echarts实例
      let piechart = this.$echarts.init(document.getelementbyid("piechart"));
      // 绘制图表
      piechart.setoption(this.option);
    }
  },

数据格式:

   this.piedata = [
     //第一个圆环图
      {
        name: "左",   
        data: [
          {
            name: "",
            value: "37"
          },
          {
            name: "3",
            value: "5"
          },
          {
            name: "1",
            value: "24"
          },
          {
            name: "2",
            value: "15"
          },
          {
            name: "6",
            value: "2"
          },
          {
            name: "5",
            value: "3"
          }
        ]
      },
   //第二个圆环图
      {
        name: "中",
        data: [
          {
            name: "",
            value: "37"
          },
          {
            name: "3",
            value: "5"
          },
          {
            name: "1",
            value: "24"
          },
          {
            name: "2",
            value: "15"
          },
          {
            name: "6",
            value: "2"
          },
          {
            name: "5",
            value: "3"
          }
        ]
      }, 
      //第三个圆环图
      {
        name: "右",
        data: [
          {
            name: "",
            value: "37"
          },
          {
            name: "3",
            value: "5"
          },
          {
            name: "1",
            value: "24"
          },
          {
            name: "2",
            value: "15"
          },
          {
            name: "6",
            value: "2"
          },
          {
            name: "5",
            value: "3"
          }
        ]
      }
    ];

数据请求转换格式

this.list = res.data;
						
var self = this;
this.list.foreach(function(value,index,array){
		    				
 self.piedata[0].data[index].value = value.number;
 self.piedata[0].data[index].name = value.name;
		    				
});
this.piedata[0].name = "jj";
//console.log(this.piedata)
this.drawpie();//绘制图标函数
js555888金沙老品牌的版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由思创斯整理,转载请注明出处:https://ispacesoft.com/119147.html

(0)

相关推荐

  • vue监听localstorage变化(注册激活)「终于解决」(vue监听localstorage变化)本文适用于jetbrains家族所有ide,包括intellijidea,phpstorm,webstorm,pycharm,datagrip等。intel…

  • 1、父组件可以使用props把数据传给子组件。2、子组件可以使用$emit触发父组件的自定义事件。vm.$emit(event,arg)//触发当前实例上的事件vm.$on(event,fn);//监听event事件后运行fn;例如:子组件:

  • vue 双向数据绑定原理「建议收藏」vue.js则是采用数据劫持结合发布者-订阅者模式的方式,通过object.defineproperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。vue实现双向数据绑定的原理就是利用了object.defineproperty()这个方法重新定义了对象获取属性值(get)和设置属性值(set…

  • flowable 工作流 springboot vue.js 整合框架项目源码特别注意:本代码为 springboot 工作流 前后分离 跨域 版本 (权限控制到菜单和按钮) 后台框架:springboot2.3.0 flowable6.5.0 mybaits mave

  • vue路由懒加载的实现方式_webpack懒加载原理本文已参与「新人创作礼」活动,一起开启掘金创作之路1.路由懒加载如何实现当打包构建应用时,javascript包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就会更加高效当前,我们使用如下方式导入组件importloginfrom’../views/login打包后,这些组件都会被打包到一个.s文件中,css代码会打包到css文件中访问应用时,就会下载这js文件和对应的css文件随着代码的增多,文件

    2022年12月30日
  • vue实现横向可滑动的菜单_vue滚动条插件在移动端,横向滚动的时候,使用一个小小滚动条,说明是可以左右滑动的。在这里不是直接左右滑动切换到下个页面,而是div左右滑动。效果如哈罗单车这种金刚区的交互。下面蓝色的是滚动条我自己实现效果如下:代码如下:

  • spring boot vue3_spring boot作者:xiangzhihong 来源:segmentfault.com/a/1190000021376934 虽然 b/s 是目前开发的主流,但是 c/s 仍然有很大的市场需求。受限于浏览器的沙盒限制

  • vue父子组件传值props_字符串常用方法es2017引入了字符串补全长度的函数。如果某个字符串的长度不够指定的长度,会在头部或尾部补全。padstart()用于头部补全,padend()用于尾部补全。’a’.padstart(3,’0′)//’00a’ ‘x’.padend(5,’ab’)//’xabab’ ‘x’.padend(4,’ab’)//’xaba’上面代码中,padstart()和padst…

发表回复

您的电子邮箱地址不会被公开。

联系金沙1005

关注“java架构师必看”公众号

回复4,添加站长微信。

附言:ispacesoft.com网而来。

关注微信
网站地图