vue+echarts图表的基本使用

这篇具有很好参考价值的文章主要介绍了vue+echarts图表的基本使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

在实际开发当中,我们经常需要用到一些图表来实现数据可视化,这时候 echarts 可以帮助我们实现数据的展示。这里将介绍如何使用前端框架vue+echarts来实现数据可视化。


一、echarts是什么?

长话短说,echarts就是一个帮助数据可视化的库。

二、Vue+echarts使用步骤

1.安装 echart

npm install echarts --save

2.在main.js 引入 echarts

import * as echarts from 'echarts'
Vue.prototype.$echarts = echarts //将echarts作为全局变量加入Vue

3.一个vue组件显示一个图表

代码:直接复制代码创建一个vue组件,到App中引入组件即可

<template>
    <div id="myChart" :style="{width: '100%', height: '1000px'}" />
</template>
<script>
  export default {
    mounted() {
      this.drawLine()
    },
    methods: {
      drawLine() {
        // 基于准备好的dom,初始化echarts实例
        const myChart = this.$echarts.init(document.getElementById('myChart'))
        myChart.setOption({
          title: [
            {
              text: '雷达图',
              left:'center'
            }
          ],
          polar: {
            radius: [30, '70%']
          },
          radiusAxis: {
            max: 4
          },
          angleAxis: {
            type: 'category',
            data: ['a', 'b', 'c', 'd'],
            startAngle: 75
          },
          tooltip: {},
          series: {
            type: 'bar',
            data: [2, 1.2, 2.4, 3.6],
            coordinateSystem: 'polar',
            label: {
              show: true,
              position: 'middle',
              formatter: '{b}: {c}'
            }
          },
          backgroundColor: '#fff',
          animation: false
        })
      }
    }
  }
</script>

引入

<template>
  <div id="app">
    <Pie/>
  </div>
</template>
<script>
import Pie from './components/Pie'
export default {
  name: 'App',
  components: {
    Pie 
  }
 }

效果
vue+echarts,技术工具,前端,javascript,vue.js,echarts

4. 一个组件显示多个echarts图表

以下是将两个图表放在一个组件中展示的方式 使用了 props 属性 watch 深度监视
props用于父组件向子组件传递数据

创建组件1 :柱状图

<template>
  <!-- 创建承载图标的容器 -->
  <div :id=id :data=data></div>
</template>
  <script>
  export default {
    mounted() {
      this.drawLine(this.id,this.data)
    },
    data(){
      return {
        chartGrapgh:null
      }
    },
    props:["id","data"],
    watch:{
      data:{
        handler(newVal,oldVal){
          this.drawLine(this.id,newVal)
        },
        deep:true
      }
    },
    methods: {
      drawLine(id,data) {
        // 基于准备好的dom,初始化echarts实例
        let _this = this
        let myChart = document.getElementById(id)
        this.chartGrapgh = this.$echarts.init(myChart)
        this.chartGrapgh.setOption(data)
        this.$echarts.init(document.getElementById(id)).setOption(data);

        window.addEventListener("resize",function () {
            _this.chartGrapgh.resize();  //监听浏览器缩放,自适应浏览器大小
          })
      }
    },
    beforeDestroy(){
      if(this.chartGrapgh){
        this.chartGrapgh.clear() //组件销毁之前清空图表
      }
    }
  }
</script>
  

创建组件2:折线图

<template>
    <!-- 创建承载图标的容器 -->
	<div :id=id :data=data></div>
</template>
  <script>
  
  export default {
    data(){
        return{
            newPatagrapgh:null //让每个组件都有一块自己的区域显示图表,不再是一整块
        }
    },
    props:["id","data"],
    //  深度监听 父组件刚开始没有值,只有图标的配置项
    //  父组件ajax请求后改变数据的值,传递过来,图标已生成,监听传过来的值的改变
    // deep:true.深度监听,确保data中子项修改也能监听到。写法参考:https://cn.vuejs.org/v2/api/#watch
    watch:{
        data:{
            handler(newVal,oldVal){
                this.drawLine(this.id,newVal)
            },
            deep:true
        }
    },
    mounted() {
      this.drawLine(this.id,this.data)
    },
    methods: {
      drawLine(id,data) {
        // 创建属于组件本身的图形区域,不是全局 $echarts
        let _this = this
        let mychart = document.getElementById(id)
        this.newPatagrapgh = this.$echarts.init(mychart)
        this.newPatagrapgh.setOption(data)

        window.addEventListener("resize",function () { //可选,浏览器缩放监听
            _this.newPatagrapgh.resize();
          })
      }
    },
  }
  </script>
  

父组件App.vue

<template>
  <div id="app">
    <!-- <Zhe :id="'myChart'" :data="optionZhe" style="width:75%;height:350px;"/> -->
    <hr/>
    <!-- <Zhu :id="'myChart2'" :data="optionZhu" style="width:75%;height:350px;"/> -->
    <Pie/>
  </div>
</template>

<script>
import Zhe from './components/Zhe'
import Zhu from './components/Zhu'
export default {
  name: 'App',
  components: {
    Zhe,
    Zhu
  },
  data(){ //在App中传入子组件要渲染的数据:
    return {
      optionZhe:{ //折线图的配置
         title:{
            text:"折线图",
            left:'center'
         },
         xAxis:{
          type: 'category',
          data: ['Mon','Tue','Wed','Thu','Fri','Sat','Sun']
         },
         yAxis:{
          type: 'value'
         },
         series: [
          {
            data:[5, 20, 36, 10, 10, 20],
            type:'line'
          }
         ]
        },
       optionZhu:{  //柱状图的配置
          title: {
            text: '柱状图',
            subtext: '2',
          },
          tooltip: {
            trigger: 'axis'
          },
          legend: {
            data: ['Rainfall', 'Evaporation']
          },
          toolbox: {
            show: true,
            feature: {
              dataView: { show: true, readOnly: false },
              magicType: { show: true, type: ['line', 'bar'] },
              restore: { show: true },
              saveAsImage: { show: true }
            }
          },
          calculable: true,
          xAxis: [
            {
              type: 'category',
              // prettier-ignore
              data: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
            }
          ],
          yAxis: [
            {
              type: 'value'
            }
          ],
          series: [
            {
              name: 'Rainfall',
              type: 'bar',
              data: [
                2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3
              ],
              markPoint: {
                data: [
                  { type: 'max', name: 'Max' },
                  { type: 'min', name: 'Min' }
                ]
              },
              markLine: {
                data: [{ type: 'average', name: 'Avg' }]
              }
            },
            {
              name: 'Evaporation',
              type: 'bar',
              data: [
                2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3
              ],
              markPoint: {
                data: [
                  { name: 'Max', value: 182.2, xAxis: 7, yAxis: 183 },
                  { name: 'Min', value: 2.3, xAxis: 11, yAxis: 3 }
                ]
              },
              markLine: {
                data: [{ type: 'average', name: 'Avg' }]
              }
            }
          ]
        }
    }
  }
}
</script>

效果:
vue+echarts,技术工具,前端,javascript,vue.js,echarts


三、总结

以上就是vue+echarts的基本使用:包含了在echarts在vue中的基本使用、单个组件显示单个图表以及单个组件显示多个图表。文章来源地址https://www.toymoban.com/news/detail-610377.html

到了这里,关于vue+echarts图表的基本使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3项目中使用ECharts图表并实现自适应效果

    在项目中输入如下代码: 安装完成可以在package.json中看到: 创建ECharts图表的文件barCharts.vue,将它引入并在父组件中使用。在使用setup时,我们把组件直接引入进来,就可以直接使用了,不用像Vue2那样需要注册了。 在父组件中创建一个有宽高的容器,里面放ECharts组件,ECh

    2024年02月03日
    浏览(38)
  • uniapp+vue3+ts+vite+echarts开发图表类小程序,将echarts导入项目使用的详细步骤,耗时一天终于弄好了

    想在uniapp和vue3环境中使用echarts是一件相当前卫的事情,官方适配的还不是很好,echarts的使用插件写的是有些不太清晰的,这里我花费了一天的时间,终于将这个使用步骤搞清楚了,并且建了一个仓库,大家可以直接clone下来使用。先看一下pc端和小程序端的效果: 微信小程

    2024年02月05日
    浏览(49)
  • Vue+Echarts图表动态适配

    目录 前言 一、问题背景 二、解决方案 1.在Vue组件中引入Echarts 2.初始化图表 3.监听resize事件 4.销毁图表 三、优化方案 1.防抖 2.节流 四、总结 在实际的前端开发过程中,动态适配是一个非常重要的问题。在数据可视化的场景下,图表的动态适配尤为重要。在本篇博客中,我们

    2024年02月05日
    浏览(33)
  • vue-echarts踩坑,本地开发可以渲染echarts图表,线上环境图表渲染不出来

    main.js 全局注册v-chart组件 在页面中使用 如上图,我开始写的静态数据,在data中定义了chartOption1:{…配置项…}, 在接口数据返回之后,更新了配置项,在本地开发环境可以正常渲染。但是线上环境出不来,也不报错,接口数据一切正常。 解决办法: 无奈最后没有使用‘vue-e

    2024年01月18日
    浏览(35)
  • vue左侧漏斗切换 echart图表动态更新

    这个需求是根据点击左侧的箭头部分,右侧图表切换,左侧选中数据高亮(图片用的svg)    

    2024年02月11日
    浏览(26)
  • 前端技术Html,Css,JavaScript,Vue3

    1.基本标签 2.文本格式化 3.链接 4.图片 5.无序列表 6.有序列表 7.表格 8.表单 1.选择器 2.文本和字体 3.链接 4.隐藏 5.定位position 6.浮动 7.对齐 8.图像 1.输出 2.函数 3.常用事件 4.DOM 5.改变Html 6.DOM 元素 (节点) 尾部创建新的 HTML 元素 (节点) - appendChild() 头部创建新的 HTML 元素 (节点)

    2024年02月13日
    浏览(37)
  • vue2、vue3分别配置echarts多图表的同步缩放

    大家好!我是yma16,本文分享在vue2和vue3中配置echarts的多图表同步缩放 背景: 解决echarts的多图表x轴同步联动的问题 echarts的datazoom api对外暴露 原理: echarts的实例存在datazoom缩放的方法, 所以只需要在datazoom事件触发其他图表的datazoom即可实现同步缩放 注意: x轴的范围要一

    2024年02月09日
    浏览(66)
  • VUE2+Element-ui+封装Echarts图表

    封装Echarts图表,如下效果图 Home组件代码块,使用的mock.js模拟数据封装 Echarts图表组件 安装所需依赖 cnpm i axios -S 安装axios接口请求 cnpm i mockjs 或 yarn add mockjs 安装mockjs生成模拟随机数据 cnpm i echarts 或 yarn add echarts 安装echarts图表 cnpm i element-ui -S 安装element-ui组件库 安装less c

    2024年02月08日
    浏览(36)
  • 解决vue3集成echarts数据刷新后图表不刷新问题

    vue3 集成 echarts 最大的坑就是出现了,reactive 的数据 刷新了,但图表缺不会刷新,查了很多资料,试了很多方式都没效果,最后测试出来解决方法很简单: 核心代码: 附上 TSX 整个页面参考

    2024年02月13日
    浏览(41)
  • Vue2+Echarts+SpringBoot+Websocket+Scheduled实现大屏图表数据实时展示

    近期在学习websocket的相关技术,用于做前后端的数据实时交互,结合网上资料和个人理解,整理了一个小白入门案例,不喜勿喷!!!!! WebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议) 它实现了浏览器与服务器全双工通信,能更好的节省服务器资源

    2024年02月20日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包