04 ECharts基础入门

文章目录

  • 一、ECharts介绍
    • 1. 简介
    • 2. 相关网站
    • 3. HTML引入方式
    • 4. 基本概念
  • 二、常见图表
    • 1. 柱状图
    • 2. 折线图
    • 3. 饼图
    • 4. 雷达图
    • 5. 地图
  • 三、应用
    • 1. 动画
    • 2. 交互


一、ECharts介绍

1. 简介

ECharts是一个使用JavaScript实现的开源可视化库,用于生成各种图表和图形。
ECharts提供了折线图、柱状图、散点图、饼图、地图、时间序列等,以及各种交互功能和数据可视化效果。

ECharts的主要特点包括:

  1. 高度定制化:用户可以根据自己的需求自定义图表的各种属性和样式,包括颜色、字体、交互等。
  2. 跨平台:ECharts可以在各种浏览器和设备上运行,包括桌面浏览器、移动设备和嵌入式浏览器。
  3. 丰富的图表类型和组件:ECharts提供了大量的图表类型和组件,可以满足各种数据可视化的需求。
  4. 高度兼容性:ECharts支持多种数据格式和数据源,可以与各种数据库和数据服务进行集成。
  5. 易于使用:ECharts提供了简单易用的API和文档,用户可以快速上手并创建各种图表。

2. 相关网站

ECharts 官网
ECharts CDN

3. HTML引入方式

  • 本地引入
<script src="echarts-5.4.3.min.js"></script>
  • CDN引入
<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.4.3/echarts.min.js "></script>

4. 基本概念

echart = echarts.init(document.getElementById("container"));	// 初始化类
option = {														// 配置类
	title: {													// 标题
		text: 'Website',
		left: 'center'
	},
	tooltip: {													// 提示框
		trigger: 'item'
	},
	legend: {													// 配置图例的显示和位置
		orient: 'vertical',
		left: 'left'
	},
	xAxis: {													// 配置X轴(直角坐标才会有)
		type: 'category',
		data: []
	},
	yAxis: {													// 配置Y轴(直角坐标才会有)
		type: 'value'
	},
	series: [													// 配置图表的数据和绘制方式
	{
		type: '',												// 图表类别,如折线图(line)
		data: [													// 图表数据,可以是数组或对象数组
		]
	}]
};
echart.setOption(option);										// 渲染图形

二、常见图表

1. 柱状图

柱状图官方示例

<!DOCTYPE html>
<html lang="en">
<head>
	<title>Test</title>
    <link rel="icon" href="data:;base64,=">
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
	<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.4.3/echarts.min.js"></script>
</head>
<body>
	<div id="container" style="width: 600px; height: 500px;"></div>
</body>
<script>
	echart = echarts.init(document.getElementById("container"));
	option = {
		xAxis: {
			type: 'category',
			data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
		},
		yAxis: {
			type: 'value'
		},
		series: [
		{
			data: [120, 200, 150, 80, 70, 110, 130],
			type: 'bar'
		}]
	};
	echart.setOption(option);
</script>
</html>
  • HTML页面效果
    在这里插入图片描述

2. 折线图

折线图官方示例

<!DOCTYPE html>
<html lang="en">
<head>
	<title>Test</title>
    <link rel="icon" href="data:;base64,=">
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
	<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.4.3/echarts.min.js"></script>
</head>
<body>
	<div id="container" style="width: 600px; height: 500px;"></div>
</body>
<script>
	echart = echarts.init(document.getElementById("container"));
	option = {
		xAxis: {
			type: 'category',
			data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
		},
		yAxis: {
			type: 'value'
		},
		series: [
		{
			data: [50, 130, 160, 170, 120, 110, 170],
			type: 'line'
		}]
	};
	echart.setOption(option);
</script>
</html>
  • HTML页面效果
    在这里插入图片描述

3. 饼图

饼图官方示例

<!DOCTYPE html>
<html lang="en">
<head>
	<title>Test</title>
    <link rel="icon" href="data:;base64,=">
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
	<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.4.3/echarts.min.js"></script>
</head>
<body>
	<div id="container" style="width: 600px; height: 500px;"></div>
</body>
<script>
	echart = echarts.init(document.getElementById("container"));
	option = {
		title: {
			text: 'Website',
			left: 'center'
		},
		tooltip: {
			trigger: 'item'
		},
		legend: {
			orient: 'vertical',
			left: 'left'
		},
		series: [
		{
			name: 'Access From',
			type: 'pie',
			radius: '50%',
			data: [
				{ value: 1048, name: 'Search Engine' },
				{ value: 735, name: 'Direct' },
				{ value: 580, name: 'Email' },
				{ value: 484, name: 'Union Ads' },
				{ value: 300, name: 'Video Ads' }
			],
			emphasis: {
				itemStyle: {
					shadowBlur: 10,
					shadowOffsetX: 0,
					shadowColor: 'rgba(0, 0, 0, 0.5)'
				}
			}
		}]
	};
	echart.setOption(option);
</script>
</html>
  • HTML页面效果
    在这里插入图片描述

4. 雷达图

雷达图官方示例

<!DOCTYPE html>
<html lang="en">
<head>
	<title>Test</title>
    <link rel="icon" href="data:;base64,=">
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
	<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.4.3/echarts.min.js"></script>
</head>
<body>
	<div id="container" style="width: 600px; height: 500px;"></div>
</body>
<script>
	echart = echarts.init(document.getElementById("container"));
	option = {
		title: {
			text: 'Radar Chart'
		},
		legend: {
			data: ['Allocated Budget', 'Actual Spending']
		},
		radar: {
			indicator: [
				{ name: 'Sales', max: 6500 },
				{ name: 'Administration', max: 16000 },
				{ name: 'Technology', max: 30000 },
				{ name: 'Customer', max: 38000 },
				{ name: 'Development', max: 52000 },
				{ name: 'Marketing', max: 25000 }
			]
		},
		series: [
		{
			name: 'Budget vs spending',
			type: 'radar',
			data: [
				{
					value: [4200, 3000, 20000, 35000, 50000, 18000],
					name: 'Allocated Budget'
				},
				{
					value: [5000, 14000, 28000, 26000, 42000, 21000],
					name: 'Actual Spending'
				}
			]
		}]
	};
	echart.setOption(option);
</script>
</html>
  • HTML页面效果
    在这里插入图片描述

5. 地图

<!DOCTYPE html>
<html lang="en">
<head>
	<title>Test</title>
    <link rel="icon" href="data:;base64,=">
    <meta charset="UTF-8">
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
	<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.4.3/echarts.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/echarts/map/js/china.js"></script>
</head>
<body>
    <div id="container" style="width: 800px; height: 600px;"></div>
    <script>
        data_list = [
        	{name:'黑龙江',value:-2},		{name:'吉林',value:0},			{name:'辽宁',value:5},
			{name:'北京',value:10},			{name:'天津',value:11},			{name:'山东',value:10},
			{name:'河北',value:9},			{name:'河南',value:7},			{name:'湖北',value:12},
			{name:'湖南',value:11},			{name:'江苏',value:12},			{name:'安徽',value:12},
			{name:'上海',value:12},			{name:'浙江',value:11},			{name:'福建',value:13},
			{name:'广东',value:17},			{name:'四川',value:11},			{name:'重庆',value:11},
			{name:'江西',value:10},			{name:'陕西',value:10},			{name:'贵州',value:10},
			{name:'广西',value:10},			{name:'山西',value:10},			{name:'云南',value:17},
			{name:'甘肃',value:0},			{name:'内蒙古',value:0},			{name:'海南',value:21},
			{name:'新疆',value:0},			{name:'宁夏',value:0},			{name:'青海',value:-1},
			{name:'西藏',value:0},			{name:'香港',value:17},			{name:'澳门',value:17},
			{name:'台湾',value:12},
        ]
        data_value_list = [-2,0,5,10,11,10,9,7,12,11,12,12,12,11,13,17,11,11,10,10,10,10,10,17,0,0,21,0,0,-1,0,17,17,12]
        option = {
            title: {
                text: '全国省市温度',
                x: 'center'
            },
            tooltip: {
                trigger: 'item',
                formatter: '省市:{b}<br/>温度:{c}'
            },
            dataRange: {
                min: 0,
                max: Math.max.apply(null, data_value_list),
                x: 'left',
                y: 'bottom',
                text: ['高', '低'],
                calculable: true,
                color: ['orangered', 'yellow', 'lightskyblue']
            },
            series: [
                {
                    name: '数据',
                    type: 'map',
                    mapType: 'china',
                    roam: false,
                    itemStyle: {
                        normal: { label: { show: true } },
                        emphasis: { label: { show: true } }
                    },
                    data: data_list
                }
            ]
        };
        echart = echarts.init(document.getElementById('container'));
        echart.setOption(option);
    </script>
</body>
</html>
  • HTML页面效果
    在这里插入图片描述

三、应用

1. 动画

  • 动画延迟开始
<!DOCTYPE html>
<html lang="en">
<head>
	<title>Test</title>
    <link rel="icon" href="data:;base64,=">
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
	<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.4.3/echarts.min.js"></script>
</head>
<body>
	<div id="container" style="width: 600px; height: 500px;"></div></body>
<script>
	echart = echarts.init(document.getElementById("container"));
	var xAxisData = [];
	var data1 = [];
	var data2 = [];
	for (var i = 0; i < 100; i++) {
		xAxisData.push('A' + i);
		data1.push((Math.sin(i / 5) * (i / 5 - 10) + i / 6) * 5);
		data2.push((Math.cos(i / 5) * (i / 5 - 10) + i / 6) * 5);
	}
	option = {
		legend: {
			data: ['bar1', 'bar2']
		},
		xAxis: {
			data: xAxisData,
			splitLine: {
				show: false
			}
		},
		yAxis: {},
		series: [
		{
			name: 'bar1',
			type: 'bar',
			data: data1,
			emphasis: {
				focus: 'series'
			},
			animationDelay: function(idx) {
				return idx * 10;
			}
		},
		{
			name: 'bar2',
			type: 'bar',
			data: data2,
			emphasis: {
				focus: 'series'
			},
			animationDelay: function(idx) {
				return idx * 10 + 100;
			}
		}],
		animationEasing: 'elasticOut',
		animationDelayUpdate: function(idx) {
			return idx * 5;
		}
	};
	echart.setOption(option);
</script>
</html>
  • HTML页面效果
    在这里插入图片描述

2. 交互

  • 用鼠标可以拖拽曲线的点,从而改变曲线的形状
<!DOCTYPE html>
<html lang="en">
<head>
	<title>Test</title>
    <link rel="icon" href="data:;base64,=">
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
	<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.4.3/echarts.min.js"></script>
</head>
<body>
	<div id="container" style="width: 600px; height: 500px;"></div></body>
</body>
<script>
	var symbolSize = 20;
	var data = [
	  [15, 0],
	  [-50, 10],
	  [-56.5, 20],
	  [-46.5, 30],
	  [-22.1, 40]
	];
	var myChart = echarts.init(document.getElementById('container'));
	myChart.setOption({
	  tooltip: {
		triggerOn: 'none',
		formatter: function(params) {
		  return (
			'X: ' +
			params.data[0].toFixed(2) +
			'<br />Y: ' +
			params.data[1].toFixed(2)
		  );
		}
	  },
	  xAxis: { min: -100, max: 80, type: 'value', axisLine: { onZero: false } },
	  yAxis: { min: -30, max: 60, type: 'value', axisLine: { onZero: false } },
	  series: [
		{ id: 'a', type: 'line', smooth: true, symbolSize: symbolSize, data: data }
	  ]
	});
	myChart.setOption({
	  graphic: echarts.util.map(data, function(item, dataIndex) {
		return {
		  type: 'circle',
		  position: myChart.convertToPixel('grid', item),
		  shape: { r: symbolSize / 2 },
		  invisible: true,
		  draggable: true,
		  ondrag: echarts.util.curry(onPointDragging, dataIndex),
		  onmousemove: echarts.util.curry(showTooltip, dataIndex),
		  onmouseout: echarts.util.curry(hideTooltip, dataIndex),
		  z: 100
		};
	  })
	});
	window.addEventListener('resize', function() {
	  myChart.setOption({
		graphic: echarts.util.map(data, function(item, dataIndex) {
		  return { position: myChart.convertToPixel('grid', item) };
		})
	  });
	});
	function showTooltip(dataIndex) {
	  myChart.dispatchAction({
		type: 'showTip',
		seriesIndex: 0,
		dataIndex: dataIndex
	  });
	}
	function hideTooltip(dataIndex) {
	  myChart.dispatchAction({ type: 'hideTip' });
	}
	function onPointDragging(dataIndex, dx, dy) {
	  data[dataIndex] = myChart.convertFromPixel('grid', this.position);
	  myChart.setOption({
		series: [
		  {
			id: 'a',
			data: data
		  }
		]
	  });
	}
</script>
</html>
  • HTML页面效果
    在这里插入图片描述

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

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

相关文章

RT_Thread_修改为外部晶振及验证

关注两处&#xff1a; 1、stm32f4xx_hal_conf.h&#xff0c;外部晶振频率HSE宏定义 2、drv_clk.c&#xff0c;system_clock_config函数 1、外部晶振频率HSE宏定义 根据实际外部晶振的频率去定义&#xff0c;使用的是8MHz&#xff1b; 2、system_clock_config 开启HSE&#…

改造python3中的http.server为简单的文件上传下载服务

改造 修改python3中的http.server.SimpleHTTPRequestHandler&#xff0c;实现简单的文件上传下载服务 simple_http_file_server.py&#xff1a; # !/usr/bin/env python3import datetime import email import html import http.server import io import mimetypes import os …

Thymeleaf生成pdf表格合并单元格描边不显示

生成pdf后左侧第一列的右描边不显示&#xff0c;但是html显示正常 显示异常时描边的写法 cellpadding“0” cellspacing“0” &#xff0c;td,th描边 .self-table{border:1px solid #000;border-collapse: collapse;width:100%}.self-table th{font-size:12px;border:1px sol…

markdown学习(初学者)

学习途径&#xff1a; 在线markdown编辑器_微信公众号markdown排版工具 Markdown 基本语法 | Markdown 官方教程 标题 要创建标题&#xff0c;请在单词或短语前面添加井号 (#) 。# 的数量代表了标题的级别。例如&#xff0c;添加三个 # 表示创建一个三级标题 (<h3>) (…

【华为网络-配置-023】- 一般企业网架构方案(单节点方案)

要求&#xff1a; 1、防火墙 FW1 G1/0/0 接口使用 PPPoE 拨号获取 IP 地址。 2、FW1 配置信任&#xff08;内网包含服务器&#xff09;和非信任区域&#xff08;Internet 外网&#xff09;。 3、FW1 配置 NAPT 使内网可以上网。 4、核心交换机 LSW1 划分 VLAN 并配置各接口及三…

Python 日期时间模块详解(datetime)

文章目录 1 概述1.1 datetime 类图1.2 类描述 2 常用方法2.1 获取当前日期时间&#xff1a;now()、today()、time()2.2 日期时间格式化&#xff1a;strftime()2.3 日期时间大小比较&#xff1a;>、、<2.4 日期时间间隔&#xff1a;- 3 扩展3.1 Python 中日期时间格式化符…

Java / Scala - Trie 树简介与应用实现

目录 一.引言 二.Tire 树简介 1.树 Tree 2.二叉搜索树 Binary Search Tree 3.字典树 Trie Tree 3.1 基本概念 3.2 额外信息 3.3 结点实现 3.4 查找与存储 三.Trie 树应用 1.应用场景 2.Java / Scala 实现 2.1 Pom 依赖 2.2 关键词匹配 四.总结 一.引言 Trie 树…

案例054:基于微信的追星小程序

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

安装node.js并创建第一个vue项目

目录 一&#xff0c;下载node.js 二&#xff0c;创建一个vue项目 一&#xff0c;下载node.js 1.进入官网&#xff1a;Node.js (nodejs.org) 2.选择版本 3.选择安装方式 4.运行安装包&#xff0c;下载文件 5.选择要安装的路径后一直next 6.安装完成后打开命令提示符&#xff…

PHP短信接口防刷防轰炸多重解决方案三(可正式使用)

短信接口盗刷轰炸&#xff1a;指的是黑客利用非法手段获取短信接口的访问权限&#xff0c;然后使用该接口发送大量垃圾短信给目标用户 短信验证码轰炸解决方案一(验证码类解决)-CSDN博客 短信验证码轰炸解决方案二(防止海外ip、限制ip、限制手机号次数解决)-CSDN博客 PHP短信…

推荐几款转换视频格式的好用转换工具,小白也能上手

视频格式转换工具是一种专门转换视频的软件&#xff0c;可让你将一种视频格式转换为另一种视频格式&#xff08;例如&#xff0c;MOV 到 MP4&#xff09;&#xff0c;通常可以节省空间。 本文将介绍一些用于转换视频格式的好用转换工具&#xff0c;并且详细描述了它们的主要功…

【FPGA】数字电路设计基础

数字电路基础 1 什么是数字电路 在学习数字电路之前&#xff0c;我们先要了解下什么是数字电路。想要搞明白数字电路&#xff0c;就要搞明白生活中有 两种概念&#xff0c; 数字信号和模拟信号&#xff0c;模拟信号一般包括压力、气温、速度等信号&#xff0c;模拟量的值是可…

智能成绩表 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 100分 题目描述 小明来到某学校当老师,需要将学生按考试总分或单科分数进行排名,你能帮帮他吗? 输入描述 第1行输入两个整数,学生人数n和科目数量m。0<n<100,0<m<10 第2行输入m个科目名称,彼此之间用空格隔开。科目名称只由英文…

这书看着贼得劲儿

作者呕心沥血2年&#xff0c;再出力作~~~ 给大家推荐一本好玩的书 神经网络与TensorFlow 本来以为出版了第一本书&#xff0c;应该对于漫长的审核有免疫力了&#xff0c;结果又被这本书折磨了2年。于是作者痛定思痛&#xff0c;决定第三本书写一本纯科普的书籍。 墙裂推荐 这…

跨境电商危机公关:应对负面舆情的策略优化

随着跨境电商的快速发展&#xff0c;企业在全球市场中面临的竞争与挑战也日益复杂。在这个数字时代&#xff0c;负面舆情一旦爆发&#xff0c;可能对企业形象和经营造成深远影响。 因此&#xff0c;跨境电商企业需要建立有效的危机公关策略&#xff0c;以迅速、果断、有效地应…

Python集合魔法:解锁数据去重技巧

. 在Python编程的魔法世界中&#xff0c;有一种数据类型几乎被忽视&#xff0c;但却拥有强大的超能力&#xff0c;那就是集合&#xff08;Set&#xff09;。 集合是一种无序、唯一的数据类型&#xff0c;它以其独特的特点在编程世界中独占一席之地。 1. 集合的定义和特点 集…

Quantlib环境安装踩坑记录

1.conda 安装python3.7环境&#xff1b; 2.因为torch1.8.2环境已经被弃用&#xff0c;所以通过nvidia-smi命令确认cuda版本是11.6后进入环境&#xff0c; 输入pip install torch1.12.0cu116 torchvision0.13.0cu116 torchaudio0.12.0 torchtext0.13.0 --extra-index-url https:…

第二证券:股债跷跷板是什么?投资者该如何应对?

股市和债市虽然是两个不同的证券交易商场&#xff0c;但它们之间保持着一定的联系&#xff0c;比较典型的&#xff0c;便是股债商场间的联动&#xff0c;也称为股债跷跷板。股债跷跷板是什么&#xff1f;出资者该怎样应对&#xff1f;关于这些&#xff0c;本文将借用相关知识作…

基于SSM框架的购物商城系统论文

摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管理就很关键。因此商城购物信息的…

多屏模式输入法可以正确切换屏幕展示原理剖析

背景 hi&#xff0c;粉丝朋友们&#xff1a; 近期有个学员问到了一个输入法相关问题。刚好梳理了一下输入法相关的在多屏模式的一个展示流程&#xff0c;这里做个记录&#xff0c;也相当于深入理解窗口相关的一篇干货blog。 如上面两幅图展示&#xff0c;输入法可以自由自在显…