专栏首页编程微刊axios请求Echarts折线图

axios请求Echarts折线图

在jQuery里面,实现一个折线图,【前端统计图】echarts实现单条折线图 https://www.jianshu.com/p/0354a4f8c563

1:在项目里面安装折线图 cnpm install echarts --s

2:在需要用图表的地方引入

import echarts from 'echarts'

3:打开echarts.vue 继续写代码,代码如下:

<template>
    <div>
    <!--为echarts准备一个具备大小的容器dom-->
    <div id="main" style="width: 600px;height: 400px;"></div>
    </div>
</template>
<script>
    import echarts from 'echarts'
    export default {
        name: '',
        data() {
            return {
                charts: '',
            /*  opinion: ["1", "3", "3", "4", "5"],*/
                opinionData: ["3", "2", "4", "4", "5"]
            }
        },
        methods: {
            drawLine(id) {
                this.charts = echarts.init(document.getElementById(id))
                this.charts.setOption({
                    tooltip: {
                        trigger: 'axis'
                    },
                    legend: {
                        data: ['近七日收益']
                    },
                    grid: {
                        left: '3%',
                        right: '4%',
                        bottom: '3%',
                        containLabel: true
                    },

                    toolbox: {
                        feature: {
                            saveAsImage: {}
                        }
                    },
                    xAxis: {
                        type: 'category',
                        boundaryGap: false,
                    data: ["1","2","3","4","5"]
                    
                    },
                    yAxis: {
                        type: 'value'
                    },

                    series: [{
                        name: '近七日收益',
                        type: 'line',
                        stack: '总量',
                        data: this.opinionData
                    }]
                })
            }
        },
        //调用
        mounted() {
            this.$nextTick(function() {
                this.drawLine('main')
            })
        }
    }
</script>

4:这个时候,可以看到,加载出的折线图了,后面可以继续进行完善。 成功显示折线图

5:以上的数据是通过变量构造的 实际项目里面 需要用到axios请求后端接口 那么,我们今天就把接口写在mock里面吧

首先在mock里面新建一个echarts.json

echarts.json文件

{
    "categories": [
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
        "8",
        "9",
        "10",
        "11",
        "12"
    ],
    "data": [
        3,
        2,
        4,
        4,
        5
    ]
}

6:在build目录下找到webpack.dev.conf.js文件,编写以下代码

// mock code
const express = require('express')
const app = express()
const test = require('../mock/test.json') 
const echarts = require('../mock/echarts.json') 
const routes = express.Router()
app.use('/api', routes)

// 如果是post请求,那么将get改为post即可
devServer: {
 ...
 before(app){
 app.get('/api/test', (req, res) => {
  res.json(test)
 }),
 
 app.get('/api/echarts', (req, res) => {
  res.json(echarts)
 })
 }

7:浏览器输入http://localhost:8080/api/echarts 成功看到模拟数据

8:echarts.vue里面的代码。

一开始写代码的时候,赋值成功,数据也能打印在控制台上,但是不知道为什么就是绘制不出来折线图,我表示很无奈,于是问了一下张小丽,她让我把 this.drawLine('main')方法直接放在赋值之后,一开始我是放在 mounted()里面进行调用的,更换了位置之后,再次打开浏览器,折线图已经绘制在浏览器里面了,哈哈,有大神闺蜜带飞的感觉可真好。

<template>
    <div>
    <!--为echarts准备一个具备大小的容器dom-->
    <div id="main" style="width: 600px;height: 400px;"></div>
    </div>
</template>
<script>
    import echarts from 'echarts'
      import axios from "axios";
    export default {
        name: '',
        data() {
            return {
                charts: '',
          
               /* opinionData: ["3", "2", "4", "4", "5"]*/
               opinionData: []
            }
        },
        methods: {
             getData() {
                axios.get('http://localhost:8080/api/echarts').then(response => {
                    console.log(response.data);
                       this.opinionData =response.data.data;
                        this.drawLine('main')
                }, response => {
                    console.log("error");
                });
            },
            drawLine(id) {
                this.charts = echarts.init(document.getElementById(id))
                this.charts.setOption({
                    tooltip: {
                        trigger: 'axis'
                    },
                    legend: {
                        data: ['近七日收益']
                    },
                    grid: {
                        left: '3%',
                        right: '4%',
                        bottom: '3%',
                        containLabel: true
                    },

                    toolbox: {
                        feature: {
                            saveAsImage: {}
                        }
                    },
                    xAxis: {
                        type: 'category',
                        boundaryGap: false,
                    data: ["1","2","3","4","5"]
                    
                    },
                    yAxis: {
                        type: 'value'
                    },

                    series: [{
                        name: '近七日收益',
                        type: 'line',
                        stack: '总量',
                        data: this.opinionData
                    }]
                })
            },
                                
        },
        //调用
        mounted() {
            this.getData();         
        }
    }
</script>

9:再次查看,从json里面请求过来的数据就这样展示在界面了。


原文作者:祈澈姑娘 技术博客:https://www.jianshu.com/u/05f416aefbe1 90后前端妹子,爱编程,爱运营,文艺与代码齐飞,魅力与智慧共存的程序媛一枚,对于博客上面有不会的问题,欢迎加入编程微刊qq群:260352626。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • uni-app学习笔记-实现一个简单统计图(三)

    根据原型需要,先来写一个统计图,其实和vue实现一个统计图的方法是一样的。axios请求Echarts折线图 https://www.jianshu.com/...

    王小婷
  • 在Vue中使用Echarts

    前端可视化是一个前端最基本的技能,要想做的好看,还是得借助一下百度家的echarts,那要怎么在Vue中使用echarts?这个官网没有给出实例,实例基本都是在...

    王小婷
  • 在Vue中使用Echarts

    前端可视化是一个前端最基本的技能,要想做的好看,还是得借助一下百度家的echarts,那要怎么在Vue中使用echarts?这个官网没有给出实例,实例基本都是在...

    王小婷
  • 修复cocos2d-jsv3.1文本换行bug

    本文作者:IMWeb vienwu 原文出处:IMWeb社区 未经同意,禁止转载 使用cocos2d-js版开发跨平台手游非常简单,并且在手机端也拥有...

    IMWeb前端团队
  • 修复cocos2d-jsv3.1文本换行bug

    使用cocos2d-js版开发跨平台手游非常简单,并且在手机端也拥有不错的性能。但因为推出时间并不够久,用户也不够多,项目里仍然存在不少bug,这里介绍一个常见...

    IMWeb前端团队
  • nodemailer极简源码解析与实现原理

    ① 本文只解析基于SMTP协议发送邮件的情况 ② 本文的解析基于删减学习版—simple-nodemailer (https://github.com/Atta...

    进击的小进进
  • HDU - 2024 C语言合法标识符

    C语言标识符是指用来标识某个实体的一个符号,在不同的应用环境下有不同的含义,标识符由字母(A-Z,a-z)、数字(0-9)、下划线“_”组成,并且首字符不能是数...

    种花家的奋斗兔
  • poj 2251 Dungeon Master(广搜)

    题意:三维空间,可以走上下左右前后六个方向,求最短路径,BFS #include<stdio.h> #include<queue> #include<strin...

    用户1624346
  • Vue 的打包优化之路Vue的打包优化之路

    ECharts的JSON地图文件占了很大一部分,大概有1.96MB gzip以后900KB,这一部分是没有办法做处理的。然后ECharts也应该使用按需加载

    MrTreasure
  • 【Codeforces】1230B - Ania and Minimizing

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    喜欢ctrl的cxk

扫码关注云+社区

领取腾讯云代金券