【Echarts】在Vue中使用Echarts

引入第三方库vue-echarts

Vue是数据驱动dom,改变数据让图表自动根据数据变化更新,但是Echarts中是使用实例,myChart.setOption(option)进行更新,并不能根据数据变换自动更新视图,因此Echarts不符合vue使用的概念。因此为了解决这个问题,引入第三方库vue-echarts

vue-echarts安装与使用

vue2中使用Echarts

vue-echarts安装

安装两个库:echarts和vue-echarts

npm install echarts vue-echarts

要在vue 2下使用vue-echarts,需要确保@vue/composition-api 已经安装
(-D是–save-dev的缩写,也就是说composition-api并不会打包到生产版本,只在开发版本)

npm i -D @vue/composition-api

为了更小的打包体积,建议是手动从ECharts引入单个图表和组件,可参考github文档
如果实在需要全量引入从而无需手动引入模块,需需要在代码中添加:

import 'echarts'

vue2中使用Echarts

main.js文件

import Vue from 'vue';
import App from './App.vue';
import router from './router';
import store from './store';
//引入ECharts
import ECharts from 'vue-echarts';
import 'echarts';

Vue.component('ECharts',ECharts);

DataView.vue
ECharts第一个简单demo

<template>
    <div>
        <e-charts
        class="chart"
        :option="option"
        />
    </div>
    
</template>
<script>
export default {
    data(){
        return{
            option:{
                xAxis: {
                    type: 'category',
                    data: ['A', 'B', 'C']
                },
                yAxis: {
                    type: 'value'
                },
                series: [
                    {
                    data: [120, 200, 150],
                    type: 'line'
                    }
                ]
            }
        }
    }
    
}
</script>

<style scoped>
.chart{
    height: 400px;
}

</style>

运行结果
在这里插入图片描述
修改完善后:

  • 完善数据形式,获取后端数据进行图表渲染;
  • 每秒更新一次数据(随机生成);
  • data一旦改变,option改变,如此一来,Echarts在vue中使用完美符合vue开发概念

修改后的DataView.vue

<template>
    <div>
        <e-charts
        class="chart"
        :option="option"
        />
    </div>
    
</template>
<script>
export default {
    data(){
        return{
            data:this.getRandomData(),
            
        }
    },
    // data一旦改变,option则改变,因此将option放入计算属性
    computed:{
        option(){
            return{
                xAxis: {
                    type: 'category',
                    // data: ['A', 'B', 'C']
                    // 映射
                    data:this.data.map(d => d.time)
                },
                yAxis: {
                    type: 'value'
                },
                series: [
                    {
                    type: 'line' , 
                    // data: [120, 200, 150],
                    data: this.data.map(d => d.value)
                    }
                ]
            }
                
            }
    },
    // 更新data,每秒更新一次
    created(){
        setInterval(() =>{
            this.data=this.getRandomData();
        },1000);
    },
    methods:{
        //随机生成数据
        getRandomData(){
            return [
                {
                    time:'2018-01-02',
                    value:Math.random()*100,
                },
                {
                    time:'2018-01-02',
                    value:Math.random()*100,
                },
                {
                    time:'2018-01-02',
                    value:Math.random()*100,
                },
                {
                    time:'2018-01-02',
                    value:Math.random()*100,
                },
            ];
        }
    }
    
}
</script>

<style scoped>
.chart{
    height: 400px;
}

</style>

运行结果
在这里插入图片描述

vue3中使用Echarts

vue-echarts安装

安装两个库:echarts和vue-echarts

npm install echarts vue-echarts

vue3中使用Echarts

main.js文件

import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
import store from './store';

import ECharts from 'vue-echarts';
import 'echarts';

createApp(App)
    .use(store)
    .use(router)
    .component('ECharts', ECharts)
    .mount('#app')

App.vue
第一个简单示例

<template>
  <e-charts class="chart" :option="option"/>
</template>
<script setup> 
// 在vue3中要将option挂载上,需要ref
import {ref} from 'vue';
const option = ref({
    xAxis: {
      type: 'category',
      data: ['A', 'B', 'C']
    },
    yAxis: {
      type: 'value'
    },
    series: [
      {
        data: [120, 200, 150],
        type: 'line'
      }
    ]
});
</script>

<style>
.chart{
  height: 400px;
}
</style>

运行结果
在这里插入图片描述
改进App.vue
让option响应data数据更新

<template>
  <e-charts class="chart" :option="option"/>
</template>
<script setup> 
// 在vue3中要将option挂载上,需要ref
import {ref ,computed} from 'vue';
const data=ref([
  {value:50,name:'A'},
  {value:80,name:'B'},
  {value:30,name:'C'},
  {value:120,name:'D'},
  {value:10,name:'E'},
]);

// 没秒更新数据一次
setInterval(() =>{
  data.value=data.value.map(item =>({
    ...item,
    value:Math.random()*100,
  }));
},1000);

//如何让option响应data数据更新
const option=computed(() =>{
  return {
    xAxis: {
      type: 'category',
      // data: ['A', 'B', 'C']
      // 实际数据映射
      data:data.value.map(d => d.name)
    },
    yAxis: {
      type: 'value'
    },
    series: [
      {
        // data: [120, 200, 150],
        data:data.value.map(d => d.value),
        type: 'line'
      }
    ]
}
});

// const option = ref({
//     xAxis: {
//       type: 'category',
//       // data: ['A', 'B', 'C']
//       // 实际数据映射
//       data:data.value.map(d => d.name)
//     },
//     yAxis: {
//       type: 'value'
//     },
//     series: [
//       {
//         // data: [120, 200, 150],
//         data:data.value.map(d => d.value),
//         type: 'line'
//       }
//     ]
// });


</script>

<style>
.chart{
  height: 400px;
}
</style>

运行结果
在这里插入图片描述

Vue项目中使用ECharts,可按以下步骤操作: 1. **安装ECharts**:在项目根目录下,打开终端,运行以下命令安装ECharts: ```bash npm install echarts --save ``` 此步骤依据引用[2]。 2. **引入ECharts**:有全局引入和在组件中局部引入两种方式。 - **全局引入**:在项目的入口文件(通常是`main.js`)中添加以下代码,使ECharts在所有组件中可用: ```javascript import Vue from 'vue'; import echarts from 'echarts'; Vue.prototype.$echarts = echarts; ``` - **局部引入**:在需要使用EChartsVue组件的`<script>`部分,使用以下代码导入ECharts: ```javascript import echarts from 'echarts'; ``` 这一内容参考了引用[1]和引用[2]。 3. **使用ECharts进行绘图**: - **准备图表容器**:在Vue组件的`<template>`部分,为ECharts准备一个具有给定宽高的DOM元素作为图表容器,示例如下: ```vue <template> <div id="myChart" style="width: 600px; height: 400px;"></div> </template> ``` - **初始化并绘制图表**:在组件的`<script>`部分,通过ECharts的`init`方法初始化一个ECharts实例,然后使用`setOption`方法导入图表配置来完成绘制。示例代码如下: ```javascript export default { mounted() { // 初始化ECharts实例 const myChart = echarts.init(document.getElementById('myChart')); // 配置图表选项 const option = { xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, yAxis: { type: 'value' }, series: [{ data: [820, 932, 901, 934, 1290, 1330, 1320], type: 'line' }] }; // 使用配置项显示图表 myChart.setOption(option); } }; ``` 该部分参考了引用[4]。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值