Vue项目中使用echarts教程

Vue项目中使用echarts教程

  • 步骤
    • npm 安装ECharts
    • 引入 ECharts
      • 老版本引入方式 (v4版本)
      • 新版本引入方式 (v5版本)
    • ECharts初体验
    • ECharts组件化(进阶写法)

步骤

npm 安装ECharts

npm install echarts --save

引入 ECharts

  • (1)全局使用:在项目入口文件main.js中引入Echarts
  • (2)局部使用:就直接在所需要的页面中引入Echarts

老版本引入方式 (v4版本)

//全部引入
import echarts from 'echarts';
// 或者按需引入
import echarts from 'echarts/lib/echarts';

//以下函数,是用在在main.js里面的
//通过Vue.prototype 将echarts保存为全局变量,才能真正使用
Vue.prototype.$echarts = echarts 

新版本引入方式 (v5版本)

//全部引入
import * as echarts from 'echarts';
// 按需引入
import * as echarts from 'echarts/lib/echarts';

//以下函数,是用在在main.js里面的
//通过Vue.prototype 将echarts保存为全局变量,才能真正使用
Vue.prototype.$echarts = echarts 

ECharts初体验

<template>
    <!-- 关键声明: id  和 width 和  height 都会影响图表的展示-->
    <div id="demo" style="width: 500px;height:400px;"></div>
</template>

<script>
    export default {
        name: "HelloWord",
        mounted(){
            //进入页面就执行一次
            this.drawChart();
        },
        methods: {
            drawChart() {
                //2. 基于准备好的dom,初始化echarts实例
                //此处的意思就是,对 demo 元素 进行图表初始化的相关操作
                var myChart = this.$echarts.init(document.getElementById('demo'));
                //3. 指定图表的配置项和数据
                //该处就是图表内容,在官网的示例里面,要复制过来到项目里面的也是这一块内容
                var option = {
                    title: {
                        text: 'ECharts 入门示例'
                    },
                    tooltip: {},
                    legend: {    //图例组件
                        data:['销量']
                    },
                    xAxis: {
                        data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
                    },
                    yAxis: {},
                    series: [{
                        name: '销量',
                        type: 'bar',
                        data: [5, 20, 36, 10, 10, 20]
                    }]
                };
                //4.使用刚指定的配置项和数据显示图表。
                myChart.setOption(option);

            }
        },
        
    }
</script>

<style scoped>

</style>

ECharts组件化(进阶写法)

把需要图表vue页面,抽成子组件,供父组件使用,更加方便

ECharts图表子组件案例
son.vue

<template>
<div style="width:100%;height:100%;margin:0;">
  <!-- 这个id接收父页传进来的id,也就是动态接收-->
  <div :id="id"></div>
</div>

</template>

<script>
//使用echarts局部引入的方式(我这边的版本是5版本)
import * as echarts from 'echarts';
export default {
  props:["id","datas"],//接收父页传入值
  data() {
    return {
     
    };
  },
  computed:{
    
  },
  watch:{
   
  },
  mounted() {
    _this= this;
    this.getChartData();
  },
  methods: {
    getChartData() {
      console.log("echar内部");
      console.log("父页传入的datas",this.datas);
      this.drawChart();
    },
    drawChart() {
      //初始化echarts实例
      let myChart = echarts.init(document.getElementById(this.id));

      let option = {
        tooltip: {
          trigger: 'axis',
          axisPointer: {
            type: 'cross',
            label:{
              color: '#ffffff'
            },
            crossStyle: {
              color: '#ffffff'
            }
          }
        },
        legend: {
          data: ['短信推送量', '站内消息量'],
          textStyle:{
            color: '#ffffff'//字体颜色
          },
        },
        xAxis: [
          {
            type: 'category',
            data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
            axisPointer: {
              type: 'shadow'
            },
            axisLabel: {
              show: true,
              textStyle: {
                color: '#ffffff'
              }
            }
          }
        ],
        yAxis: [
          {
            type: 'value',
            name: '短信推送量(条)',
            nameTextStyle:{
              color:"#ffffff",
            },
            min: 0,
            max: 250,
            interval: 50,
            axisLabel: {
              formatter: '{value} ',
              textStyle: {
                color: '#ffffff'
              }
            },
            splitLine :{    //网格线
              show:true, //隐藏或显示
              lineStyle:{
                type:'dotted'    //设置网格线类型 dotted:虚线   solid:实线
              },
            }
          },
          {
            type: 'value',
            name: '站内消息量(条)',
            nameTextStyle:{
              color:"#ffffff",
            },
            min: 0,
            max: 25,
            interval: 5,
            axisLabel: {
              formatter: '{value} ',
              textStyle: {
                color: '#ffffff'
              }
            },
            splitLine :{    //网格线
              show:true, //隐藏或显示
              lineStyle:{
                type:'dotted'    //设置网格线类型 dotted:虚线   solid:实线
              },
            }
          }
        ],
        series: [
          {
            name: '短信推送量',
            type: 'bar',
            tooltip: {
              valueFormatter: function (value) {
                return value + ' 条';
              }
            },
            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
            ]
          },
          {
            name: '站内消息量',
            type: 'line',
            yAxisIndex: 1,
            tooltip: {
              valueFormatter: function (value) {
                return value + ' 条';
              }
            },
            data: [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]
          }
        ]
      };

      // 调用setOption
      myChart.setOption(option)

      //建议加上以下这一行代码
      //不加的话,当浏览器窗口缩小的时候,样式会出现问题
      window.addEventListener("resize", function() {
        myChart.resize();
      });
    }
  }
};
</script>

父页(引用子组件的vue页面)

father.vue

<template>
   <div>
   <!-- 注意看我这边的id 接收的是静态的字符串字面量(表示不可更改)-->
     <Son :id="'Son'" :datas="SonData"></Son>
   </div>
</template>

<script>
//引入子组件
import Son from "./components/echarts/Son";

export default {
  name: "father",
  data() {
   return {
     SonData: null,
   };
 },
 //import引入的组件需要注入到对象中才能使用
  components: {
    Son,
  },
  mounted(){},
  methods: {},    
}
</script>

<style scoped>

</style>

参考文章
【1】Vue项目中使用echarts教程
https://blog.csdn.net/SatanDYG/article/details/115050822

【2】在vue中使用Echarts[官方5分钟上手ECharts]
https://www.cnblogs.com/ludeng-blog/p/12531903.html

【3】ECharts官网
https://echarts.apache.org/handbook/zh/basics/release-note/v5-upgrade-guide/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/603838.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

「网络流 24 题」太空飞行计划 【最大权值闭合图】

「网络流 24 题」太空飞行计划 题意 有 n n n 个实验 和 m m m 个器械&#xff0c;每个实验都需要若干个指定的器械才能进行 实验 i i i 的盈利为 p i p_i pi​&#xff0c; 器械 j j j 的花销为 c j c_j cj​ 找出纯利润最大的实验计划 思路 这是非常典型的最大权值…

STM32 各外设GPIO配置

高级定时器TIM1/TIM8 通用定时器TIM2/3/4/5 USART SPI I2S I2C接口 BxCAN SDIO ADC/DAC 其它I/O功能

如何用Jmeter压测

推荐你阅读 互联网大厂万字专题总结 Redis总结 JUC总结 操作系统总结 JVM总结 Mysql总结 微服务总结 互联网大厂常考知识点 什么是系统调用 CPU底层锁指令有哪些 AQS与ReentrantLock原理 旁路策略缓存一致性 Java通配符看这一篇就够 Java自限定泛型 技术分享 如何vscode中刷力扣…

字节跳动(社招)四面算法原题

TikTok 进展 又是一期定时汇报 TikTok 进展的推文。 上周&#xff0c;美国总统拜登签署了价值 950 亿美元的一揽子对外援助法案。 该法案涉及强制字节跳动剥离旗下应用 TikTok 美国业务&#xff0c;即 针对 TikTok 非卖即禁的"强抢行为"开始进入九个月&#xff08;27…

每日一题 非对称之美

题目描述 I-非对称之美_牛客小白月赛31 (nowcoder.com) 题目解析 贪心算法的应用 考虑以下情况&#xff1a;当字符串中的字符全部相同时&#xff0c;即使删除任意一个字符&#xff0c;也无法使其成为一个回文串。这种情况下&#xff0c;我们无法直接套用上述的逐步比较方法。…

树莓派4b红外检测

1.红外检测连接图 2.红外检测工作原理 红外传感器的工作原理类似于物体检测传感器。该传感器包括一个红外LED和一个红外光电二极管&#xff0c;因此通过将这两者结合起来&#xff0c;可以形成一个光耦合器。 红外LED是一种发射红外辐射的发射器。该LED看起来与标准LED相似&a…

一、手写一个uart协议——rs232

先了解一下关于uart和rs232的基础知识 文章目录 一、RS232的回环测试1.1模块整体架构1.2 rx模块设计1.2.1 波形设计1.2.2代码实现与tb1.2.4 仿真 1.3 tx模块设计1.3.1 波形设计1.3.2 代码实现与tb1.3.4 顶层设计1.3.3 仿真 本篇内容&#xff1a; 一、RS232的回环测试 上位机…

安卓surfaceview的使用方式

1. 什么是surfaceview surfaceview内部机制和外部层次结构 在安卓开发中&#xff0c;我们经常会遇到一些需要高性能、高帧率、高画质的应用场景&#xff0c;例如视频播放、游戏开发、相机预览等。这些场景中&#xff0c;我们需要直接操作图像数据&#xff0c;并且实时地显示到…

大模型微调实战之强化学习 贝尔曼方程及价值函数(五)

大模型微调实战之强化学习 贝尔曼方程及价值函数&#xff08;五&#xff09; 现在&#xff0c; 看一下状态-动作值函数的示意图&#xff1a; 这个图表示假设首先采取一些行动(a)。因此&#xff0c;由于动作&#xff08;a&#xff09;&#xff0c;代理可能会被环境转换到这些状…

不止于量子!“光与热”两大架构重塑计算前沿

在探索超越传统计算机性能的途径中&#xff0c;量子计算通常被视为一种前沿技术。然而&#xff0c;它并非解决所有计算挑战的唯一方案。事实上&#xff0c;最近有两家公司推出了基于独特物理原理的计算设备&#xff0c;这些设备专门针对特定应用设计&#xff0c;据称在处理特定…

Python数据分析之绘制相关性热力图的完整教程

前言 文章将介绍如何使用Python中的Pandas和Seaborn库来读取数据、计算相关系数矩阵&#xff0c;并绘制出直观、易于理解的热力图。我们将逐步介绍代码的编写和执行过程&#xff0c;并提供详细的解释和示例&#xff0c;以便读者能够轻松地跟随和理解。 大家记得需要准备以下条…

家用洗地机应该怎么选?哪个牌子好?市场上主流洗地机品牌推荐

洗地机的出现&#xff0c;让越来越多的家庭享受清洁的过程&#xff0c;给人们腾出来更多的时间陪伴家人和休息。但是在选购一台洗地机前&#xff0c;大家多多少少肯定有些疑问&#xff0c;洗地机到底实不实用&#xff1f;好不好用&#xff1f;能扫干净吗&#xff1f;还有哪些好…

重置密码之后无法ssh登录

背景描述 我这边有个服务器S&#xff0c;我从ServerA可以ssh上去&#xff0c;但是我从堡垒机B无法ssh上去&#xff1b;一开始以为是密码问题&#xff0c;手动重置密码&#xff0c;但是依然无法登录进去&#xff1b;一直提示密码错误&#xff1b;改了好几次密码都不行 问题原因…

OpenCV4.8 VS2019 MFC编程出现的诡异现象

OpenCV4.8及OpenCV4.4 VS2019MFC编程在调用imred&#xff08;&#xff09;函数时&#xff0c;debug X64试运行没问题。 release X64试运行时出现下面错误。 void CEasyPictureDlg::OnBnClickedOpen() {CFileDialog fdlg(TRUE, NULL, 0, OFN_HIDEREADONLY | OFN_OVERWRITEPROMP…

数据结构——实现通讯录(附源码)

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 点击主页&#xff1a;optimistic_chen和专栏&#xff1a;c语言&#xff0c; 创作不易&#xff0c;大佬们点赞鼓…

Python中cv2 (OpenCV, opencv-python)库的安装、使用方法demo最新详细教程

&#x1f42f; Python中cv2 (OpenCV, opencv-python)库的安装、使用方法demo最新详细教程 &#x1f4f8; 文章目录 &#x1f42f; Python中cv2 (OpenCV, opencv-python)库的安装、使用方法demo最新详细教程 &#x1f4f8;摘要引言正文&#x1f4d8; OpenCV库概述&#x1f680; …

手动下载huggingface数据集到本地加载

需要使用huggingface上的数据集时一般如下加载&#xff1a; import datasets dataset datasets.load_dataset("dataset_name")但是经常会报连接错误等问题&#xff0c;所以我们可以去huggingface官网下载好数据集&#xff0c;然后直接用数据集路径替换dataset_name…

Springboot+Vue项目-基于Java+MySQL的流浪动物管理系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

快速话术本(常用文本快速复制工具)EXE成品+软件源码

功能介绍 经常性需要重复性的输入几个不同的文本&#xff0c;来回复制很麻烦&#xff0c;这个小工具可以帮你解决&#xff0c;把要经常输入的文本添加进去&#xff0c;点击即可复制~ 链接&#xff1a;https://pan.baidu.com/s/14-U_9uzkvpCrpzBkQaDZeA?pwdu7ot 提取码&#…

IT项目管理 选择/判断 【太原理工大学】

第一章、IT项目管理 判断题 1、搬家属于项目。&#xff08; 对 &#xff09; 2、项目是为了创造一个唯一的产品或提供一个唯一的服务而进行的永久性的努力。&#xff08; 错 &#xff09; 3、项目具有临时性的特征。&#xff08; 对 &#xff09; 4、项目开发过程…
最新文章