04 ECharts基础入门

news2024/11/29 22:36:13

文章目录

  • 一、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页面效果
    在这里插入图片描述

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

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

相关文章

确定TME浸润模式的TMEscore包(胃癌)

步骤学习&#xff1a; 1&#xff0c;基因筛选&#xff1a; 作者使用先前研究得出的 244 肿瘤免疫相关基因&#xff08;244里有AB两个细分亚集&#xff09;&#xff0c;对特征基因进行缩减。从多个免疫治疗队列中获取这些基因的重要性特征。&#xff08;TCGA-SKCM、GSE78220、…

layui实现下拉框多选

引用layui第三方扩展实现下拉框选择渲染 第三方插件地址xmSelect下拉多选 xmSelect 实现效果 //第三方扩展插件 <script type"text/javascript" src"${ctx }/config/layui/dist/xm-select.js"></script> //jquery渲染 <script type&qu…

微服务的利与弊

一、前言 自从大多数web架构从单体演进到服务拆分&#xff0c;到微服务一统天下的几年来&#xff0c;应该没有web应用不是微服务架构的吧。最开始是阿里的doubble分层架构&#xff0c;到后来的SpringCloud全家桶&#xff0c;还有各个大厂自己定义的一套服务治理框架。微服务无…

visual Studio MFC 平台实现拉普拉斯和拉普拉斯与直方图均衡化与中值滤波相结合实现比较

拉普拉斯变换的原理与应用 本文使用visual Studio MFC 平台实现图像增强中的拉普拉斯变换&#xff0c;同时拉普拉斯一般不会单独使用&#xff0c;与其他平滑操作相结合&#xff0c;本文使用了拉普拉斯与直方图均衡化以及与中值滤波相结合&#xff0c;也对三种方式进行了对比 关…

Avalonia中如何将View事件映射到ViewModel层

前言 前面的文章里面我们有介绍在Wpf中如何在View层将事件映射到ViewModel层的文章&#xff0c;传送门&#xff0c;既然WPF和Avalonia是两套不同的前端框架&#xff0c;那么WPF里面实现模式肯定在这边就用不了&#xff0c;本篇我们将分享一下如何在Avalonia前端框架下面将事件…

Zabbix自定义飞书webhook告警媒介2

说明:适用于7.0及以上版本,低版本可能会有问题。 参数如下: 名称 值EVENT.DURATION{EVENT.DURATION}EVENTDATE

Ubuntur编译ROS报错:error PCL requires C++14 or above

ubuntu20.04 编译ROS包 报错&#xff1a; error&#xff1a; PCL requires C14 or above&#xff1a; 修改Cmakelists.txt文件&#xff1a; set&#xff08;CMAKE_CXX_STANDARD 14&#xff09; 再次编译成功.

什么是高防IP,高防IP该如何选择。

高防IP&#xff0c;指的是高防御能力的IP地址。在互联网的世界里&#xff0c;网络安全问题成为一个重要的话题。作为一个用户&#xff0c;你是否曾遇到过被黑客攻击造成的网站瘫痪、信息泄露等问题&#xff1f;如果你是一个企业&#xff0c;你是否考虑过自己公司的网站和业务的…

持续集成交付CICD:Jenkins使用GitLab共享库实现自动更新前后端项目质量配置

目录 一、实验 1.Jenkins使用GitLab共享库实现自动更新后端项目质量配置 2.Jenkins使用GitLab共享库实现自动更新前端项目质量配置 二、问题 1.Sonarqube如何添加自定义质量阈 一、实验 1.Jenkins使用GitLab共享库实现自动更新后端项目质量配置 (1)修改GitLab的Sonar.gr…

<JavaEE> 经典设计模式之 -- 使用阻塞队列实现“生产者-消费者模型”

目录 一、阻塞队列和“生产者-消费者模型”之间的关系 二、标准库提供了阻塞队列 三、实现自己的阻塞队列 3.1 基于数组实现普通的环形队列 3.2 将上述代码改造为线程安全 3.3 增加阻塞功能 四、使用阻塞队列实现“生产者-消费者模型” 一、阻塞队列和“生产者-消费者模…

10-tornado项目部署

1. python3的安装和配置 1.1 安装系统依赖包 sudo dnf install wget yum-utils make gcc openssl-devel bzip2-devel libffi-devel zlib-devel -y1.2 下载Python wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz1.3 解压 tar xzf Python-3.9.5.tgz 1.4 安装…

限流算法,基于go的gRPC 实现的

目录 一、单机限流 1、令牌桶算法 3、固定窗口限流算法 4、滑动窗口 二、集群限流 1、分布式固定窗口 &#xff08;基于redis&#xff09; 2、分布式滑动窗口 一、单机限流 1、令牌桶算法 令牌桶算法是当流量进入系统前需要获取令牌&#xff0c;没有令牌那么就要进行限…

php操作数据库,用wampserver工具

php操作数据库&#xff0c;用wampserver工具 打开wampserver数据库可视化&#xff0c;创建表格&#xff0c;插入数据 DROP TABLE IF EXISTS user; CREATE TABLE IF NOT EXISTS user (user_Id int NOT NULL AUTO_INCREMENT COMMENT 用户编号,user_Name varchar(20) CHARACTER S…

MySQL生成UUID并去除-

uuid()函数 uuid() 函数可以使mysql生成uuid,但是uuid中存在-,如下图&#xff1a; 去除uuid的- 默认生成的uuid含有-&#xff0c;我们可以使用replace函数替换掉-&#xff0c;SQL如下 select replace(uuid(),"-","") as uuid;Insert语句中使用UUID 如果…

VR远程带看,助力线下门店线上化转型“自救”

VR远程带看&#xff0c;因自身高效的沉浸式在线沟通功能&#xff0c;逐渐走进了大众的视野。身临其境的线上漫游体验以及实时同屏互联的新型交互模式&#xff0c;提升了商家同用户之间的沟通效率&#xff0c;进一步实现了远程线上一对一、一对多的同屏带看&#xff0c;用户足不…

解决Error:You‘re using an RSA key with SHA-1, which is no longer allowed

一、问题 在微信开发者工具中&#xff0c;推送代码时发生错误Error:You‘re using an RSA key with SHA-1, which is no longer allowed...... 奇怪的是命令行可以正常push: 原因&#xff1a;因为生成密钥的RSA算法&#xff0c;由于安全性原因&#xff0c;现在已经不允许使用…

Elasticsearch:什么是机器学习?

机器学习定义 机器学习 (ML) 是人工智能 (AI) 的一个分支&#xff0c;专注于使用数据和算法来模仿人类的学习方式&#xff0c;并随着时间的推移逐渐提高准确性。 计算机科学家和人工智能创新者 Arthur Samuel 在 20 世纪 50 年代首次将其定义为 “赋予计算机无需明确编程即可学…

【每日一题】—— C. Removal of Unattractive Pairs(Codeforces Round 913 (Div. 3))(思维)

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;每日一题 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日反刍 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓称…

【FPGA图像处理实战】- 图像处理前景如何?就业前景如何?

图像处理是FPGA应用的主要领域之一&#xff0c;图像处理数据量特别大且对实时性处理要求高的场景&#xff0c;这恰好能发挥FPGA流水线可实时处理的优势。 那么FPGA图像处理的前景如何&#xff1f; 一、FPGA开发&#xff08;图像处理&#xff09;招聘就业情况 看FPGA图像处理…

Notes数据直接在Excel中统计

大家好&#xff0c;才是真的好。 我希望你看过前面两篇内容《Domino REST API安装和运行》和《Domino REST API安装和运行》&#xff0c;因为今天我们正是使用REST API方式在Excel中查询和统计Notes数据。 不过首先你得知道一个OData协议&#xff0c;全名Open Data Protocol(…