vue+echarts实现柱状图、曲线图、饼状图等

首先安装echarts插件

 npm install echarts --save

在使用的组件引入echarts插件

import myCharts from '../myCharts/index.vue'

实现图表组件化代码如下

<!-- 
title   @string 标题
legend:[
  data  @Arrary 视图示例
]
tooltip @Object 提示框
xAxis:[
  data  @Array  视图x轴
]
yAxis:[
  data  @Array  视图y轴
]
series:[
  {
    type   @string 视图类型 值 柱状图-bar,折线图-line,平画图-type:'line'smooth:true,面-asesStyle:{color:'#f00'},饼状图-pie
    data   @Array  数据源
    name   @string  图名称
  }
]
-->

<template>
    <div>
      <!-- id设置为动态的,因为同一页面同时使用同一个id会被认为是一个图表 -->
      <div :style="{height: chartH +'px',width: chartW + 'px'}" :id="chartsId"></div>
    </div>
</template> 

<script>
  import * as echarts from 'echarts'
  export default {
    name: 'myCharts',
    data(){
      return{
        myEcharts:null,
        cahrtData:null,
        
        // options:{
        //   title:{
        //     text:"柱状图"
        //   },
        //   legend:{
        //     data:['支出','收入']
        //   },
        //   tooltip:{},
        //   xAxis:{
        //     data:["1月","2月","3月","4月","5月","6月","7月"]
        //   },
        //   yAxis:{},
        //   series:[
        //     {
        //       type:"bar",
        //       data:['20','30','40','50','60','70','80'],
        //       name:'支出'
        //     },
        //     {
        //       type:"bar",
        //       data:['20','30','40','50','60','70','80'],
        //       name:'收入'
        //     }
        //   ]
        // }
      }
    },
    props:{
        options:{
            title:{
            text:"柱状图"
            },
            legend:{
            data:[]
            },
            tooltip:{},
            xAxis:{
            data:[]
            },
            yAxis:{},
            series:[
            {
                type:"bar",
                data:[],
                name:''
            },
            {
                type:"bar",
                data:[],
                name:''
            }
            ]
        },
        chartsId:{
            type:String,
            default:"myChart"
        },
        chartW:{
          type:Number,
          default:600
        },
        chartH:{
          type:Number,
          default:400
        }
    },
    computed:{
    },
    watch:{
      //options需要深度监听,因为options是一个对象,不深层监听对象内的属性值改变是无法浅监听的
      options:{
        handler(val){
          //监听到内部属性值发生变化时,更新charts视图
          this.myEcharts.setOption(this.options)
        },
        //开启深度监听
        deep:true
      }
    },
    methods:{
      //柱状图
      initEchart(){
        //初始化chart视图,动态获取渲染视图的div
        this.myEcharts=echarts.init(document.getElementById(`${this.chartsId}`))
        this.myEcharts.setOption(this.options)
      }
    },
    mounted(){
      this.initEchart()
    }
  }
</script>

引用组件示例如下

<template>
  <div class="charts">
    <myCharts :options="options"></myCharts>
    <myCharts chartsId="myLineChart" :options="options1"></myCharts>
  </div>
</template>

<script>
import myCharts from '../myCharts/index.vue'
export default{
  components:{myCharts},
  data(){
    return{
      options:{
          title:{
            text:"柱状图"
          },
          legend:{
            data:['支出','收入']
          },
          tooltip:{},
          xAxis:{
            data:["1月","2月","3月","4月","5月","6月","7月"]
          },
          yAxis:{},
          series:[
            {
              type:"bar",
              data:['20','30','40','50','60','70','80'],
              name:'支出'
            },
            {
              type:"bar",
              data:['20','30','40','50','60','70','80'],
              name:'收入'
            }
          ]
        },
        options1:{
          title:{
            text:"曲线图"
          },
          legend:{
            data:['存款','贷款']
          },
          tooltip:{},
          xAxis:{
            data:["1月","2月","3月","4月","5月","6月","7月"]
          },
          yAxis:{},
          series:[
            {
              type:"line",
              data:['1220','230','4440','5050','1060','1170','2280'],
              name:'存款'
            },
            {
              type:"line",
              data:['200','300','400','500','60','700','80'],
              name:'贷款'
            }
          ]
        }
    }
  }
}
</script>

<style>
.charts{
  display: flex;
  justify-content: start;
}
</style>

最后示例运行结果视图

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,以下是一个基于 VueEcharts 的动态柱状图示例: ```html <template> <div id="myChart" style="width: 600px;height:400px;"></div> </template> <script> import * as echarts from 'echarts'; export default { data() { return { chartData: [], // 存储柱状图的数据 chartTimer: null // 定时器 }; }, mounted() { // 初始化 echarts 实例 this.myChart = echarts.init(document.getElementById('myChart')); // 显示初始的柱状图 this.showChart(); // 每隔 1 秒更新一次柱状图 this.chartTimer = setInterval(() => { this.showChart(); }, 1000); }, methods: { // 显示柱状图 showChart() { // 随机生成一些数据 const data = []; for (let i = 0; i < 5; i++) { data.push(Math.round(Math.random() * 100)); } // 更新柱状图的数据 this.chartData = data; // 配置柱状图的参数 const option = { title: { text: '动态柱状图示例' }, tooltip: {}, xAxis: { data: ['数据1', '数据2', '数据3', '数据4', '数据5'] }, yAxis: {}, series: [{ name: '数据量', type: 'bar', data: this.chartData }] }; // 使用刚指定的配置项和数据显示图表 this.myChart.setOption(option); } }, beforeDestroy() { // 在组件销毁前清除定时器 clearInterval(this.chartTimer); } }; </script> ``` 此示例使用了一个计时器来每隔 1 秒更新一次柱状图的数据,并使用 Echarts 的 API 更新图表。您可以将其复制到一个 Vue 单文件组件中并运行以查看动态柱状图。如果需要更多帮助,请告诉我。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜雨疯行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值