前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue+axios+echarts实现一个折线图

vue+axios+echarts实现一个折线图

作者头像
王小婷
发布2020-11-13 14:57:49
1.6K0
发布2020-11-13 14:57:49
举报
文章被收录于专栏:编程微刊编程微刊

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

Echarts官网:https://echarts.apache.org/zh/index.html

1:在项目里面安装echarts

代码语言:javascript
复制
cnpm install echarts --s

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

代码语言:javascript
复制
import echarts from "echarts";

图片.png

3:打开vue组件 继续写代码,代码如下:

代码语言:javascript
复制
<template>
  <div id="app">
    <!--为echarts准备一个具备大小的容器dom-->
    <div id="main" style="width: 600px; height: 400px"></div>
  </div>
</template>
<script>
import echarts from "echarts";
export default {
  name: "",
  data() {
    return {
      charts: "",
      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>
<style scoped>
</style>

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


以上完成的,只是一个静态页面,下面就开始完成动态数据渲染部分的折线图部分啦~~


1:进入项目,npm安装

代码语言:javascript
复制
npm install axios --save

2.在main.js下引用axios

代码语言:javascript
复制
import axios from 'axios'

image

3:准备json数据

代码语言:javascript
复制
{
    "categories": [
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
        "8",
        "9",
        "10",
        "11",
        "12"
    ],
    "data": [
        3,
        2,
        4,
        4,
        5
    ]
}

自己写了一个json数据,放在服务器上,现在要通过vue项目调用数据 http://xxx.com/test.json

4:跨域问题, 一般后端小伙伴给到我们这边的接口里面,应该对跨域问题已经处理好了,所以不需要我们处理了。

如果需要我们处理,我们可以设置代理,利用proxyTable属性实现跨域请求 在config/index.js 里面找到proxyTable :{} ,然后在里面加入以下代码 (这里处于安全考虑,我隐藏了自己的而服务器域名,如果需要测试,改成你自己的即可)

代码语言:javascript
复制
   proxyTable: {
  '/api': {
     target: 'http://inxxxe.com',//设置你调用的接口域名和端口号 
    changeOrigin: true,//允许跨域
    pathRewrite: {
      '^/api': '' //这个是定义要访问的路径,名字随便写 
    }
  }
},

5:打开一个界面test.vue,开始写请求数据的方法

代码语言:javascript
复制
 methods: {
            getData() {
                axios.get('/api/test.json').then(response => {
                    console.log(response.data);
                       this.opinionData =response.data.data;
                        this.drawLine('main')
                }, response => {
                    console.log("error");
                });
            },
        }

6:再次运行

代码语言:javascript
复制
npm run dev

运行成功之后,打开f12,查看network的请求 这个时候,我们可以看见,本地的localhost替代 了我之前放在服务器上的链接的域名,这也是设置代理成功,就解决了跨域的问题了。

请求成功

response里面也有返回值,ok,下一步就要开始将这些数据渲染在前端界面上面了。


test.vue参考代码:

代码语言:javascript
复制
<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('/api/test.json').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>

实现效果

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档