初学Echart

news2024/9/23 15:32:57

创建一个html文件

1.引入

  点击链接----快速上手网址:快速上手 - 使用手册 - Apache ECharts

复制这一串【这个是引入echart路径】

引入到这里

2.使用

我们在上一步---点击返回--往下翻---找到完整代码--复制黏贴

复制粘贴后--总体长这样

<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
	<script src="https://cdn.jsdelivr.net/npm/echarts@5.5.0/dist/echarts.min.js"></script>
</head>

<body>
	<!-- 为 ECharts 准备一个定义了宽高的 DOM -->
	<div id="main" style="width: 600px;height:400px;"></div>
	<script type="text/javascript">
		// 基于准备好的dom,初始化echarts实例
		var myChart = echarts.init(document.getElementById('main'));

		// 指定图表的配置项和数据
		var option = {
			title: {
				text: 'ECharts 入门示例'
			},
			tooltip: {},
			legend: {
				data: ['销量']
			},
			xAxis: {
				data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
			},
			yAxis: {},
			series: [
				{
					name: '销量',
					type: 'bar',
					data: [5, 20, 36, 10, 10, 20]
				}
			]
		};

		// 使用刚指定的配置项和数据显示图表。
		myChart.setOption(option);
	</script>
</body>

</html>

3.运行

咱们vscode用live server打开

4.想换个折线图

来到示例

把js全部copy

替换原有option

再运行

5.脚手架如何运行echart

先创建脚手架

下载echart:https://echarts.apache.org/handbook/zh/basics/import

copy这个命令

运行脚手架

创建一个页面---代码内容如下:

<template>
  <div class="about">
    <!-- 设置一个容器 -->
    <div id="main" style="width: 600px;height:600px">

    </div>
  </div>
</template>

<script>
//局部引入
import * as echarts from 'echarts';
export default {
  created() {

  },
  mounted() {
    //初始化容器
    this.initCharts()
  },

  methods: {
    initCharts() {
      let mycharts = echarts.init(document.querySelector('#main'))
      //绘制图标
      mycharts.setOption({
        title: {
          text: 'ECharts 入门示例'
        },
        tooltip: {},
        xAxis: {
          data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
        },
        yAxis: {},
        series: [
          {
            name: '销量',
            type: 'bar',
            data: [5, 20, 36, 10, 10, 20]
          }
        ]
      })
    }
  }
}
</script>

效果

其余配置自己需要学习看文档

Documentation - Apache ECharts

如何看文档?

比如

5.1可以有多图【比如折线和柱状图】

5.2resize()*响应容器大小变化,通常需要伴随防抖使用。

举个例子--图的容器是600px

我给容器增加宽度--但是发现图标没有变化!

那么我们可以这么做

但是我点击了按钮---echart图没有发生改变!!【因为你的宽度修改要先传入data--然后流向标签中,这个过程还没完成就已经先调用了resize,相当于自适应宽度还是为600px对于resize】

这样写就可以啦!!

5.2.1监听window窗口实现自适应

当我缩小窗口时--他也自适应窗口了!!

5.3dispose()* 容器节点被销毁时,应当调用dispose销毁实例

https://echarts.apache.org/zh/api.html#echartsInstance.dispose

6.进阶

6.1.异步数据加载

<template>
  <div class="home">
    <div id="main" style="width: 600px;height:600px">

    </div>
  </div>
</template>

<script>
// @ is an alias to /src
import * as echarts from 'echarts';

export default {
  name: 'HomeView',
  data() {
    return {
      lineCharts: null
    }
  },
  mounted() {
    this.initCharts()
    this.draw()
    this.getData()
  },
  methods: {
    //初始化echarts实例
    initCharts() {
      this.lineCharts = echarts.init(document.querySelector('#main'))
    },

    //绘制图标
    draw() {
      this.lineCharts.setOption(
        {
          title: {
            text: 'ECharts '
          },
          tooltip: {},
          xAxis: {
            data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
          },
          yAxis: {

          },
          series: [
            {
              name: '销量',
              type: 'bar',
              data: [],
            },
          ]
        }
      )
    },
    //模拟axios获取数据
    getData() {
      setTimeout(() => {
        const res = {
          msg: '操作成功',
          code: 200,
          data: [5, 20, 36, 10, 10, 20]
        }
        // this.draw(res)
        //echart内部有缓存机制,只需要传入更新的配置项就可以了
        this.lineCharts.setOption({
          series: [
            {
              data: res.data,
            },
          ]
        })
      }, 1500)
    }
  }

}
</script>

6.2echart支持一些交互事件

1.如何绑定click

如:click、mousemove、mouseover等。使用click

点击袜子

如何销毁click?--我们先看this指向什么?

指向事件源

2.如何解绑

this指向事件源--我们只能这么操作区获取lineCharts--然后进行解绑

效果:点击一次有数据--再次点击就不会触发click!!

7.geo地图

地址:简数科技

我们选择一个福建省--发现一个json路径--我们打开它

一定要选择!!GeoJSON

上一步错误

都是该省份的数据信息--我们可以导入这个json

我们存到静态资源当中去!

代码如下

<template>
  <div>

    <div id="main" style="width:400px;height:400px;border:1px solid #000">

    </div>
  </div>
</template>

<script>
import * as echarts from 'echarts';
// 引入离线geoJson数据
import fujian from '@/assets/js/350000.json'
export default {
  name: 'MapEcharts',
  data() {
    return {
      mychart: null
    };
  },

  mounted() {
    this.initCharts()
    this.setMap()
  },

  methods: {
    initCharts() {
      //注册地图数据
      echarts.registerMap('FujianMap', fujian)
      //创建实例
      this.mychart = echarts.init(document.querySelector('#main'))

    },
    //绘制地图
    setMap() {

      // 设置配置
      this.mychart.setOption({
        series: {
          name: '中国地图',
          type: 'map',
          // map值为registerMap()注册的地图名称
          map: 'FujianMap',
          roam: true,
          zoom: 1.2,
          scaleLimit: {
            min: 1,
            max: 10
          },
          // 默认状态下的样式
          label: {
            show: true,
            color: 'black'
          },
          itemStyle: {
            areaColor: '#4E90E6'
          },
          // 高亮状态下
          emphasis: {
            label: {
              show: true,
              color: '#ffffff'
            },
            itemStyle: {
              areaColor: '#ff0000'
            }
          },
          // 选中状态下
          select: {
            label: {
              show: true,
              color: 'pink'
            },
            itemStyle: {
              areaColor: 'green'
            }
          }
        }
      })
    }
  }
};
</script>

<style scoped></style>

效果

如果想修改一下地图的配置--来这里

2.进阶

“点击中国地图的福建省--下转到福建省的地图--点击福建省的泉州市--下转到泉州市的地图”--以上这个地图我们应该如何去实现呢?

首先下载axios

然后引入axios

使用axios:先复制这个链接

去请求这个链接

整体代码

<template>
  <div>

    <div id="main" style="width:600px;height:600px;border:1px solid #000">

    </div>
  </div>
</template>

<script>
import * as echarts from 'echarts';
// 引入离线geoJson数据
import fujian from '@/assets/js/350000.json'
import axios from 'axios'
export default {
  name: 'MapEcharts',
  data() {
    return {
      mychart: null
    };
  },

  mounted() {
    this.initCharts()

  },

  methods: {
    initCharts() {

      //创建实例
      this.mychart = echarts.init(document.querySelector('#main'))
      //加载数据
      axios.get('https://geojson.cn/api/data/china.json').then(({ data }) => {
        console.log(data, 'res');
        //注册地图数据
        echarts.registerMap(data.propertity.name, data)
        this.setMap(data.propertity.name)
      })

    },
    //绘制地图
    setMap(MapName) {

      // 设置配置
      this.mychart.setOption({
        series: {
          name: '中国地图',
          type: 'map',
          // map值为registerMap()注册的地图名称
          map: MapName,
          roam: true,
          zoom: 1.2,
          scaleLimit: {
            min: 1,
            max: 10
          },
          // 默认状态下的样式
          label: {
            show: true,
            color: 'black'
          },
          itemStyle: {
            areaColor: '#4E90E6'
          },
          // 高亮状态下
          emphasis: {
            label: {
              show: true,
              color: '#ffffff'
            },
            itemStyle: {
              areaColor: '#ff0000'
            }
          },
          // 选中状态下
          select: {
            label: {
              show: true,
              color: 'pink'
            },
            itemStyle: {
              areaColor: 'green'
            }
          }
        }
      })
    }
  }
};
</script>

<style scoped></style>

效果

其次我们看看axios中的data的数据包含什么?

是每个省份数据

那么我们给这个地图添加点击事件--看看拿到什么?

点击新疆--观察dataIndex:30

和axios获取的data的数据下标对应!、

所以:点击省份--获取到下标数据--去axios的data找对应下标的数据

而且观察路径哪里有变化?【也就只是json面有变化--因此我们可以做字符串凭借发送请求】

我们到底要做什么呢?【1:明确请求路径只有中国数据有!2.你点击省份--获取下标--在中国数据获取对应下标的路径编码(如350000) 3.获取的编码进行再次路径拼接  4.发送请求,进行渲染】

代码

<template>
  <div>

    <div id="main" style="width:600px;height:600px;border:1px solid #000">

    </div>
  </div>
</template>

<script>
import * as echarts from 'echarts';
// 引入离线geoJson数据
import fujian from '@/assets/js/350000.json'
import axios from 'axios'
export default {
  name: 'MapEcharts',
  data() {
    return {
      mychart: null
    };
  },

  mounted() {
    this.initCharts()

  },

  methods: {
    initCharts() {

      //创建实例
      this.mychart = echarts.init(document.querySelector('#main'))

      //加载数据
      axios.get('https://geojson.cn/api/data/china.json').then(({ data }) => {
        console.log(data, 'res');
        //注册地图数据
        echarts.registerMap(data.propertity.name, data)
        this.setMap(data.propertity.name)

        const that = this
        //点击
        this.mychart.on('click', function (e) {
          console.log(e, 'ee');
          console.log(data.features[e.dataIndex]);
          //加载数据
          axios.get(`https://geojson.cn/api/data/${data.features[e.dataIndex].properties.filename}.json`).then(({ data }) => {
            console.log(data, 'res');
            //注册地图数据
            echarts.registerMap(data.propertity.name, data)
            that.setMap(data.propertity.name)
            //我们只切换到省份--所以解绑
            that.mychart.off('click')
          })
        })
      })

    },
    //绘制地图
    setMap(MapName) {
      // 设置配置
      this.mychart.setOption({
        series: {
          name: '中国地图',
          type: 'map',
          // map值为registerMap()注册的地图名称
          map: MapName,
          roam: true,
          zoom: 1.2,
          scaleLimit: {
            min: 1,
            max: 10
          },
          // 默认状态下的样式
          label: {
            show: true,
            color: 'black'
          },
          itemStyle: {
            areaColor: '#4E90E6'
          },
          // 高亮状态下
          emphasis: {
            label: {
              show: true,
              color: '#ffffff'
            },
            itemStyle: {
              areaColor: '#ff0000'
            }
          },
          // 选中状态下
          select: {
            label: {
              show: true,
              color: 'pink'
            },
            itemStyle: {
              areaColor: 'green'
            }
          }
        }
      })
    }
  }
};
</script>

<style scoped></style>

补充!还想点击福建省的某个市--进行下一步注册地图--拼接规律如下

效果

结束!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【YOLOv10训练教程】如何使用YOLOv10训练自己的数据集并且推理使用

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

Oracle Graph 入门 - RDF 知识图谱

Oracle Graph 入门 - RDF 知识图谱 0. 引言1. 查看 RDF Semantic Graph 安装情况2. 创建一个语义网络4. 创建一个模型5. 加载 RDF 文件6. 配置 W3C 标准的 SPARQL 端点 0. 引言 Oracle Graph 的中文资料太少了&#xff0c;只能自己参考英文资料整理一篇吧。 Oracle 数据库包括…

【学习笔记】计算机组成原理(八)

CPU 的结构和功能 文章目录 CPU 的结构和功能8.1 CPU的结构8.1.1 CPU的功能8.1.2 CPU结构框图8.1.3 CPU的寄存器8.1.4 控制单元CU和中断系统 8.2 指令周期8.2.1 指令周期的基本概念8.2.2 指令周期的数据流 8.3 指令流水8.3.1 指令流水原理8.3.2 影响流水线性能的因素8.3.3 流水…

从0开始带你成为Kafka消息中间件高手---第二讲

从0开始带你成为Kafka消息中间件高手—第二讲 那么在消费数据的时候&#xff0c;需要从磁盘文件里读取数据后通过网络发送出去&#xff0c;这个时候怎么提升性能呢&#xff1f; 首先就是利用了page cache技术&#xff0c;之前说过&#xff0c;kafka写入数据到磁盘文件的时候&…

深入探索:中文字符的编码与转移字符的奥秘

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;探索字符编码的世界 二、字符编码基础&#xff1a;理解ASCII与Unicode…

面向未来AI算力中心的电能消耗及优化策略

AI苏妲己&#xff1a;面向未来AI算力中心的电能消耗及优化策略 在人工智能&#xff08;AI&#xff09;和大模型技术加速发展的今天&#xff0c;智算中心对电力需求爆发式递增。如何降低这些中心的能耗成本&#xff0c;关于电能消耗趋势、新能源发电、以及源网荷储一体化解决方…

高级卫生专技资格考试报名流程及照片尺寸审核处理指南

高级卫生专业技术资格考试是卫生专业技术人员职业发展的重要环节&#xff0c;它不仅关系到个人职称的提升&#xff08;副高、正高职称&#xff09;&#xff0c;也是对其专业能力和水平的权威认证。随着考试季的临近&#xff0c;许多考生开始关注报名流程及照片尺寸审核处理等细…

代码随想录算法训练营第36期DAY39

道心破碎的一天&#xff0c;继续加油吧&#xff0c;坚持努力。 DAY39 738单调递增的数字 暴力法&#xff1a; 没有想到用int in;i>0;i--来遍历。 class Solution {private: bool checknum(int num){ if(num<10) return true; while(num/10!0){ …

详细分析Element Plus中的ElMessageBox弹窗用法(附Demo及模版)

目录 前言1. 基本知识2. Demo3. 实战4. 模版 前言 由于需要在登录时&#xff0c;附上一些用户说明书的弹窗 对于ElMessageBox的基本知识详细了解 可通过官网了解基本的语法知识ElMessageBox官网基本知识 1. 基本知识 Element Plus 是一个基于 Vue 3 的组件库&#xff0c;其中…

C++ Primer Plus第十八章复习题

1、使用用大括号括起的初始化列表语法重写下述代码。重写后的代码不应使用数组ar。 class z200 { private:int j;char ch;double z; public:Z200(int jv,char chv&#xff0c;zv) : j(jv), ch (chv), z(zv){} };double x 8.8; std::string s "what a bracing effect ! …

前端---闭包【防抖以及节流】----面试高频!

1.什么闭包 释放闭包 从以上看出&#xff1a;一般函数调用一次会把内部的数据进行清除--但是这种操作却可以一起保留局部作用域的数据 // 优点:1、可以读取函数内部的变量 2、让这些变量始中存在局部作用域当中 2.闭包产生的两种业务场景&#xff1a;防抖、节流 2.1防抖 举…

Mysql教程(0):学习框架

1、Mysql简介 MySQL 是一个开放源代码的、免费的关系型数据库管理系统。在 Web 开发领域&#xff0c;MySQL 是最流行、使用最广泛的关系数据库。MySql 分为社区版和商业版&#xff0c;社区版完全免费&#xff0c;并且几乎能满足全部的使用场景。由于 MySQL 是开源的&#xff0…

【Windows】 IDimager Photo Supreme 2024(图片管理软件)安装教程

软件介绍 IDimager Photo Supreme 2024是一款专业的图片管理软件&#xff0c;旨在帮助用户有效地组织、管理和浏览他们的照片收藏。以下是该软件的一些主要特点和功能&#xff1a; 图片管理&#xff1a;Photo Supreme提供强大的图片管理功能&#xff0c;可以帮助用户轻松地整理…

笔记89:LeetCode_135_分发糖果

前言&#xff1a; 注&#xff1a;代码随想录中没有很清楚的提起想出方法的思路&#xff0c;只是给出了解决这个问题的大致思路和代码&#xff1b;下面我将介绍一下我的思考过程&#xff0c;并贴出实现代码&#xff1b; a a a a 思考过程&#xff1a; 思路1&#xff1a;为了…

Win32 API

个人主页&#xff1a;星纭-CSDN博客 系列文章专栏 : C语言 踏上取经路&#xff0c;比抵达灵山更重要&#xff01;一起努力一起进步&#xff01; 一.Win32 API 1.Win32 API介绍 Windows这个多作业系统除了协调应⽤程序的执⾏、分配内存、管理资源之外&#xff0c;它同时也是…

【408真题】2009-15

“接”是针对题目进行必要的分析&#xff0c;比较简略&#xff1b; “化”是对题目中所涉及到的知识点进行详细解释&#xff1b; “发”是对此题型的解题套路总结&#xff0c;并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材&#xff08;2025版&…

nginx服务器执行的过程

一:打包 1.打包前的分析 文件路径下npm run preview -- --report 生成打包之后的内容 2.解决有些内容体积过大的问题 1.删除有些不使用但是占用较多的,将main.js上import删除,打包时不会有 2.不能删除但是内容较大的 vue.config.js文件夹下 externals: { vue: Vue,…

mysql5.5版本安装过程

mysql是关系型数据库的管理系统 将安装包放在 c盘根目录 名称为mysql 在该路径下cmd进入命令执行窗口 出现此页面说明安装成功 需要修改配置文件内容 将my-medium.ini 复制粘贴并改名为 my.ini 并添加如下内容 改好之后在mysql目录下cmd进入命令执行窗口 切换到cd bin …

[集群聊天服务器]----(一)项目简介

在最近的学习中&#xff0c;实现了基于muduo网络库的集群聊天服务器&#xff0c;在此做一个剖析以及相关内容的梳理介绍&#xff0c;希望可以帮助到大家。 这一篇&#xff0c;先来简单介绍一下这个项目。 源码地址 Cluster_Chat_System-项目 项目技术特点 使用C开发并基于 …

ASP+ACCESS公司门户网站建设

【摘 要】随着计算机科学的发展&#xff0c;数据库技术在Internet中的应用越来越广泛&#xff0c;为广大网络用户提供了更加周到和人性化的服务。本文讲解了一个公司的网站的建设&#xff0c;它基于数据关联规则的公司个性化页面及动态数据生成案例&#xff0c;在网页方面&…