首页前端开发VUEVue Echarts实现多功能图表绘制的示例详解

Vue Echarts实现多功能图表绘制的示例详解

时间2024-02-11 03:23:02发布访客分类VUE浏览837
导读:收集整理的这篇文章主要介绍了Vue Echarts实现多功能图表绘制的示例详解,觉得挺不错的,现在分享给大家,也给大家做个参考。 目录前言环境搭建项目部署项目结构项目代码dashboar...
收集整理的这篇文章主要介绍了Vue Echarts实现多功能图表绘制的示例详解,觉得挺不错的,现在分享给大家,也给大家做个参考。
目录
  • 前言
  • 环境搭建
  • 项目部署
  • 项目结构
  • 项目代码
    • dashboard.vue-主界面
    • multipleColumn.vue-复合柱形图
  • 项目截图

    前言

    作为前端人员,日常图表、报表、地图的接触可谓相当频繁,今天小编隆重退出前端框架之VUE结合百度echart实现中国地图+各种图表的展示与使用;作为“你值得拥有”专栏阶段性末篇,值得一看

    主要实现功能

    • 中国地图
    • 环形图
    • 折线图
    • 柱形图
    • 复杂交互
    • 单选复选

    环境搭建

    初始化环境参考:利用vue-cli搭建vue项目框架

    项目部署

    build PRoject:

    npm install

    npm run build

    npm run dev

    访问地址:

    http://localhost:8895/#/dashboard

    项目结构

    项目代码

    dashboard.vue-主界面

    import pie From 'com/pie/pie'import line from 'com/line/line'import multipleColumn from 'com/multipleColumn/multipleColumn'import point from 'com/point/point' export default {
      data() {
        return {
          ITems: []    }
      }
    ,  mounted() {
        this.init()  }
    ,  methods: {
        oresize() {
              this.$root.charts.foreach((myChart) =>
     {
            myChart.resize()      }
    )    }
    ,    init() {
              this.items = document.querySelectorAll('.flex-container .item')      for (let i = 0;
         i  this.items.length;
     i++) {
                this.items[i].dataset.order = i + 1;
          }
        }
    ,    clickChart(clickIndex) {
          let activeitem = document.querySelector('.flex-container .active')      let activeIndex = activeItem.dataset.order      let clickItem = this.items[clickIndex - 1]      if (activeIndex === clickIndex) {
            return      }
          activeItem.classList.remove('active')      clickItem.classList.add('active')      this._setStyle(clickItem, activeItem)    }
    ,    _setStyle(el1, el2) {
          let transform1 = el1.style.transform      let transform2 = el2.style.transform      el1.style.transform = transform2      el2.style.transform = transform1    }
      }
    ,  components: {
        multipleColumn,    point,    'v-line': line,    pie: pie  }
    }
        

    multipleColumn.vue-复合柱形图

    import filter from 'com/filter/filter'import echarts from 'echarts'import china from 'echarts/map/js/china'import world from 'echarts/map/js/world'import http from 'js/http'  export default {
        data() {
            return {
                mcChart: {
    }
    ,            options2: {
                    shortcuts: [                {
                        text: '最近一周',                    value () {
                                const end = new Date();
                                const start = new Date();
                                start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
                                return [start, end];
                        }
        ,                    onClick: (picker) =>
     {
                        }
                    }
    ,                {
                        text: '最近一个月',                    value () {
                                const end = new Date();
                                const start = new Date();
                                start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
                                return [start, end];
                        }
        ,                    onClick: (picker) =>
     {
                        }
                    }
    ,                {
                        text: '最近三个月',                    value () {
                                const end = new Date();
                                const start = new Date();
                                start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
                                return [start, end];
                        }
        ,                    onClick: (picker) =>
     {
                        }
                    }
                    ]            }
    ,            value2: '',            startTime: '',            endTime: '',        }
        }
    ,    methods: {
            _mcCharts() {
                    VAR dom = document.querySelector('.multipleColumn .main')            this.mcChart = echarts.init(dom);
                var app = {
    }
        , option = null;
                    app.title = '堆叠柱状图';
                 option = {
                    title: {
                        text: '全国主要城市空气质量',                    left: 'left',                    textStyle: {
                            color: '#fff',                        fontWeight: 300,                    }
                    }
    ,                tooltip : {
                        trigger: 'axis',                    axisPointer : {
                // 坐标轴指示器,坐标轴触发有效                        tyPE : 'shadow'        // 默认为直线,可选为:'line' | 'shadow'                    }
                    }
    ,                color: ['#AE5548', '#6D9EA8', '#9CC2B0', '#C98769', '#48cda6','#fd87ab','#11abff','#ffDF33','#968ade'],                legend: {
                        data:['直接访问','邮件营销','联盟广告','视频广告','搜索引擎','百度','谷歌','必应','其他'],                    x: 'right',                    textStyle: {
                            // legend字体颜色                        color: '#fff'                    }
                    }
    ,                grid: {
                        left: '5%',                    right: '8%',                    top: '16%',                    bottom: '3%',                    containLabel: true                }
    ,                xAxis : [                    {
                            name: '时间',                        type : 'category',                        data : ['周一','周二','周三','周四','周五','周六','周日'],                        axisLine:{
                                lineStyle:{
                                    color: '#fff',                                type:'solid'  //'dotted'虚线 'solid'实线                            }
                                                     }
                        }
                    ],                yAxis : [                    {
                            name: '数量',                        type : 'value',                        splitLine: {
                            lineStyle: {
                                    color: ['rgba(230, 230, 230, 0.2)'],                                type:'dotted'  //'dotted'虚线 'solid'实线                            }
                            }
    ,                        axisLine: {
                                lineStyle:{
                                    color: '#fff',                                type:'solid'  //'dotted'虚线 'solid'实线                            }
                                                     }
                        }
                    ],                series : [                    {
                            name:'直接访问',                        type:'bar',                        data:[320, 332, 301, 334, 390, 330, 320]                    }
    ,                    {
                            name:'邮件营销',                        type:'bar',                        stack: '广告',                        data:[120, 132, 101, 134, 90, 230, 210]                    }
    ,                    {
                            name:'联盟广告',                        type:'bar',                        stack: '广告',                        data:[220, 182, 191, 234, 290, 330, 310]                    }
    ,                    {
                            name:'视频广告',                        type:'bar',                        stack: '广告',                        data:[150, 232, 201, 154, 190, 330, 410]                    }
    ,                    {
                            name:'搜索引擎',                        type:'bar',                        data:[862, 1018, 964, 1026, 1679, 1600, 1570],                        markLine : {
                                lineStyle: {
                                    normal: {
                                        type: 'dashed'                                }
                                }
    ,                            data : [                                [{
    type : 'min'}
    , {
    type : 'max'}
    ]                            ]                        }
                        }
    ,                    {
                            name:'百度',                        type:'bar',                        barWidth : 5,                        stack: '搜索引擎',                        data:[620, 732, 701, 734, 1090, 1130, 1120]                    }
    ,                    {
                            name:'谷歌',                        type:'bar',                        stack: '搜索引擎',                        data:[120, 132, 101, 134, 290, 230, 220]                    }
    ,                    {
                            name:'必应',                        type:'bar',                        stack: '搜索引擎',                        data:[60, 72, 71, 74, 190, 130, 110]                    }
    ,                    {
                            name:'其他',                        type:'bar',                        stack: '搜索引擎',                        data:[62, 82, 91, 84, 109, 110, 120]                    }
                    ]            }
        ;
                    if (option &
        &
     typeof option === "object") {
                        this.mcChart.setOption(option, true);
                }
        ;
                // 绑定点击事件            this.mcChart.on('click', function (params) {
                    console.LOG(params)            }
    )        }
    ,        // 时间插件        onChangeDate(date) {
         // daterange改变的时候触发的事件 默认接收一个date对象            this.startTime = date[0];
                    this.endTime = date[1];
            }
    ,        // 时间插件        okChange() {
     // 点击确定按钮触发的事件            var params = {
    startTime: this.startTime, endTime: this.endTime}
                if( params.startTime === '' || params.endTime=== '') {
                        this.$Message.info('请选择日期范围');
                    return            }
     else {
                    this._showPoint(params)            }
            }
    ,        // 时间插件        onClear() {
                console.log('今日实况')        }
    ,    }
    ,    mounted: function() {
            this._mcCharts()        window.addEventListener('resize', function() {
     // 第一步:main中添加style="100%",第二步:添加.bind(this)            this.mcChart.resize()        }
        .bind(this));
        }
    ,    components: {
            'v-filter': filter    }
      }
        

    项目截图

    地图功能

    饼图功能+单选复选

    复杂折线图+单选复选

    复杂柱状图+单选复选

    百度地图api实现跳点

    大屏展示

    以上就是Vue Echarts实现多功能图表绘制的示例详解的详细内容,更多关于Vue Echarts多功能图表的资料请关注其它相关文章!

    您可能感兴趣的文章:
    • Vue ECharts简易实现雷达图
    • Vue ECharts饼图实现方法详解
    • vue使用echarts实现立体柱形图
    • Vue Echarts实现带滚动效果的柱形图
    • vue+echarts实现3D柱形图
    • vue+echarts实带渐变效果的折线图

    声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


    若转载请注明出处: Vue Echarts实现多功能图表绘制的示例详解
    本文地址: https://pptw.com/jishu/609254.html
    vue项目实现一键网站换肤效果实例(webpack-theme-color-replacer的使用) Vue实现省市区三级联动el-select组件的示例代码

    游客 回复需填写必要信息