vue-admin使用echart折线图

1 安装echart插件

npm install echarts --save

2 引入echart

import * as echarts from 'echarts'

引入echart有全部引入和按需引入,这里我使用的是全部引入,且在自己需要的页面下,而不是main.js

按需引入:https://echarts.apache.org/handbook/zh/basics/import 

3 定义一个宽高容器,如果没有宽高,图表不会显示

<div id="map" style="width: 100%;height:500px;"></div>

初始化

利用echarts.init初始话一个实例,并通过 setOption方法生成

methods: {
        getMap(){
            var myChart = echarts.init(document.getElementById('map'))
            let option = {
                title: {
                    text: '本月收益统计',
                    x:'center',
                    y:'top',
                    textAlign:'left'
                },
                tooltip: {
                    trigger: 'axis'
                },
                legend: {
                    data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine'],
                    bottom: 0,
                    padding:[30, 30,0,0],
                },
                grid: {
                    left: '3%',
                    right: '4%',
                    bottom: '3%',
                    containLabel: true
                },
                // 下载图标
                // toolbox: {
                //     feature: {
                //     saveAsImage: {}
                //     }
                // },
                xAxis: {
                    type: 'category',
                    boundaryGap: false,
                    data: ['1', '2', '3', '4', '5', '6', '7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30']
                },
                yAxis: {
                    type: 'value'
                },
                series: [
                    {
                    name: 'Email',
                    type: 'line',
                    stack: 'Total',
                    data: [120, 132, 101, 134, 90, 230, 210,120, 132, 101, 134, 90, 230, 210,120, 132, 101, 134, 90, 230, 210,120, 132, 101, 134, 90, 230, 210,100,30]
                    },
                    {
                    name: 'Union Ads',
                    type: 'line',
                    stack: 'Total',
                    data: [220, 182, 191, 234, 290, 330, 310,220, 182, 191, 234, 290, 330, 310,220, 182, 191, 234, 290, 330, 310,220, 182, 191, 234, 290, 330, 310,50,60]
                    },
                    {
                    name: 'Video Ads',
                    type: 'line',
                    stack: 'Total',
                    data: [150, 232, 201, 154, 190, 330, 410,150, 232, 201, 154, 190, 330, 410,150, 232, 201, 154, 190, 330, 410,150, 232, 201, 154, 190, 330, 410,80,90]
                    },
                    {
                    name: 'Direct',
                    type: 'line',
                    stack: 'Total',
                    data: [320, 332, 301, 334, 390, 330, 320,320, 332, 301, 334, 390, 330, 320,320, 332, 301, 334, 390, 330, 320,320, 332, 301, 334, 390, 330, 320,70,60]
                    },
                    {
                    name: 'Search Engine',
                    type: 'line',
                    stack: 'Total',
                    data: [820, 932, 901, 934, 1290, 1330, 1320,820, 932, 901, 934, 1290, 1330, 1320,820, 932, 901, 934, 1290, 1330, 1320,820, 932, 901, 934, 1290, 1330, 1320,125,60]
                    }
                ]
            }
            myChart.setOption(option);

        }
    },

把getMap方法放置在mounted函数中生成,这里我使用的是组件化形式,因此需要先引入组件

import monthChart from './monthChart'

注册组件 

components:{
    monthChart,
},

将组件渲染在页面上

<monthChart ref="monthChart"></monthChart>

 最后在mounted中生成

mounted() {
   this.$refs.monthChart.getMap();
 },

 

5、效果图

 

6 结语

在实际过程中肯定不会用到死的数据,都是通过前后端交互来获取数据生成的,可按自己需求进行相应的改变和配置 

 

  

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值