ECharts多表联动图

本文介绍了如何使用ECharts库实现多图表之间的联动展示,包括设置共享组件事件、联动配置方法以及解除联动的步骤,并给出了实际的HTML代码示例。
摘要由CSDN通过智能技术生成

介绍

当需要展示的数据比较多时,放在一个图表进行展示的效果不佳,此时,可以考虑使用两个图表进行联动展示。ECharts 提供了多图表联动的功能(connect),联动的多个图表可以共享组件事件并实现保存图片时的自动拼接。多图表联动支持直角坐标系下tooltip 的联动。

实现

(1)分别设置每个BCW用对象为相同的gop值,并通过在调用EChats对象的comne方法时,传入gmoup值,从而使用多个EChars 对象建立联动关系

myChart1.group = 'group1';
myChart2.group = 'group1';
echarts.connect('group1');
// 多图表联动配置方法2:直接传入需要联动的echarts对象myChart1,myChart2
//echarts.connect([myChart1,myChart2]);

 

(2)直接调用 EChars的 connect方法,参数为一个由多个需要联动的 EChans对象组成的数组

// 多图表联动配置方法2:直接传入需要联动的echarts对象myChart1,myChart2
echarts.connect([myChart1,myChart2]);

若想要解除已有的多图表联动,则可以调用disConnect()方法 

echarts.disCounnnect('group1');

 案例实现

 源代码

<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<script type="text/javascript" src='../js/echarts.js'></script>
</head>

<body>
	<div id="main1" style="width: 600px; height:400px"></div>
	<div id="main2" style="width: 600px; height:400px"></div>
	<!-- 第一个水印 -->
  <div class="watermark1">水印 1</div>
  <!-- 第二个水印 -->
  <div class="watermark2">水印 2</div>
	<!-- <div style="position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); color: gray; font-size: small;">发财糕</div> -->
	<script type="text/javascript">
		// 基于准备好的dom,初始化ECharts图表
		 var myChart1 = echarts.init(document.getElementById("main1"));
		// var waterMarkText = '发财糕'; // 设置水印的字符
		// var canvas = document.createElement('canvas');
		// var ctx = canvas.getContext('2d');
		// canvas.width = canvas.height = 100;
		// ctx.textAlign = 'center';
		// ctx.textBaseline = 'middle';
		// ctx.globalAlpha = 0.08;
		// ctx.font = '30px Microsoft Yahei'; // 设置水印文字的字体
		// ctx.translate(50, 50); // 设置水印文字的偏转值
		// ctx.rotate(-Math.PI / 4); // 设置水印旋转的角度
		// ctx.fillText(waterMarkText, 0, 0); // 设置填充水印		
		var option1 = { // 指定第1个图表的配置项和数据
			//color: ['LimeGreen', 'DarkGreen', 'red', 'blue', 'Purple'],
			backgroundColor: 'rgba(128, 128, 128, 0.1)', // rgba设置透明度0.1
			
			title: {
				text: '23年和平精英枪械常用枪械',
				left: 40,
				top: 5
			},
			tooltip: {
				tooltip: {
					show: true
				},
			},
			legend: {
				data: ['2023年枪械使用详情'],
				left: 422,
				color:'pink',
				top: 8
			},
			xAxis: [{
				data: ["Akm", "Aug", "M762",
					"M416", "Scar-l", "Groza"
				],
				axisLabel: {
					interval: 0
				}
			}],
			yAxis: [{
				type: 'value',
			}],
			series: [{ // 配置第1个图表的数据系列
				name: '2023年枪械使用详情',
				type: 'bar',
				itemStyle: { // 设置柱状图颜色
						normal: {
							color: function (params) {
								var colorList = [ //build a color map as your need
									'#fe9f4f', '#fead33', '#feca2b', '#fed728', '#c5ee4a',
									'#87ee4a', '#46eda9', '#47e4ed', '#4bbbee', '#4f8fa8',
									'#4586d8', '#4f68d8', '#F4E001', '#F0805A', '#26C0C0'
								];
								return colorList[params.dataIndex]
							},
						}
					},
				barWidth: 40, // 设置柱状图中每个柱子的宽度
				data: [185, 62, 123, 205, 108, 128],
			}]
		};
		// 基于准备好的dom,初始化ECharts图表
		var myChart2 = echarts.init(document.getElementById("main2"));
		var option2 = { // 指定第2个图表的配置项和数据
			//color: ['blue', 'LimeGreen', 'DarkGreen', 'red', 'Purple'],
			backgroundColor: 'rgba(128, 128, 128, 0.1)', // rgba设置透明度0.1
			title: {
				text: '24年和平精英枪械常用枪械',
				left: 40,
				top: 8
			},
			tooltip: {
				show: true
			},
			legend: {
				data: ['2024年枪械使用详情'],
				left: 422,
				color:'pink',
				top: 8
			},
			xAxis: [{
				data: ["Akm", "Aug", "M762",
					"M416", "Scar-l", "Groza"
				],
				axisLabel: {
					interval: 0
				}
			}],
			yAxis: [{
				type: 'value',
			}],
			series: [{ // 配置第2个图表的数据系列
				name: '2024年枪械使用详情',
				type: 'bar',
				itemStyle: { // 设置柱状图颜色
						normal: {
							color: function (params) {
								var colorList = [ //build a color map as your need
									'#fe9f4f', '#fead33', '#feca2b', '#fed728', '#c5ee4a',
									'#87ee4a', '#46eda9', '#47e4ed', '#4bbbee', '#4f8fa8',
									'#4586d8', '#4f68d8', '#F4E001', '#F0805A', '#26C0C0'
								];
								return colorList[params.dataIndex]
							},
						}
					},
				barWidth: 40, // 设置柱状图中每个柱子的宽度
				data: [225, 98, 222, 256, 123, 111],

			}]
		};
		myChart1.setOption(option1); // 为myChart1对象加载数据
		myChart2.setOption(option2); // 为myChart2对象加载数据
		// 多图表联动配置方法1:分别设置每个echarts对象的group值
		myChart1.group = 'group1';
		myChart2.group = 'group1';
		echarts.connect('group1');
		// 多图表联动配置方法2:直接传入需要联动的echarts对象myChart1,myChart2
		echarts.connect([myChart1,myChart2]);
	</script>
</body>

</html>

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ECharts 是一个基于 JavaScript 的开源可视化库,可以用于创建各种表,包括折线、柱状、饼等。在 ECharts 中实现多图联动可以通过以下步骤完成: 1. 创建多个表实例: 在页面中创建多个 ECharts 表实例,可以通过不同的 div 元素来容纳不同的表。 2. 绑定事件: 在需要联动表上绑定事件,例如鼠标移动事件或点击事件。可以使用 ECharts 提供的 on 方法来绑定事件。 3. 获取数据: 在事件回调函数中,获取当前表的相关数据。可以使用 ECharts 提供的 getOption 方法来获取表的选项配置。 4. 更新其他表: 在事件回调函数中,根据当前表的数据更新其他需要联动表。可以使用 ECharts 提供的 setOption 方法来更新表的选项配置。 下面是一个简单的示例代码,展示了如何实现两个折线联动: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ECharts 多图联动示例</title> <script src="https://cdn.jsdelivr.net/npm/echarts@5.1.0/dist/echarts.min.js"></script> </head> <body> <div id="chart1" style="width: 600px; height: 400px;"></div> <div id="chart2" style="width: 600px; height: 400px;"></div> <script> var chart1 = echarts.init(document.getElementById('chart1')); var chart2 = echarts.init(document.getElementById('chart2')); // 假设有两组数据,data1 和 data2 // 绘制表1 var option1 = { xAxis: {}, yAxis: {}, series: [{ type: 'line', data: data1 }] }; chart1.setOption(option1); // 绘制表2 var option2 = { xAxis: {}, yAxis: {}, series: [{ type: 'line', data: data2 }] }; chart2.setOption(option2); // 绑定事件 chart1.on('mousemove', function(params) { // 获取当前表的数据 var data = params.data; // 更新表2的数据 option2.series[0].data = data; chart2.setOption(option2); }); chart2.on('mousemove', function(params) { // 获取当前表的数据 var data = params.data; // 更新表1的数据 option1.series[0].data = data; chart1.setOption(option1); }); </script> </body> </html> ``` 在上述示例中,我们创建了两个折线的实例 `chart1` 和 `chart2`,并分别绘制了两组数据。通过绑定 `mousemove` 事件,当鼠标在其中一个表上移动时,会获取当前表的数据,并更新另一个表的数据,从而实现了两个表的联动效果。 注意:上述示例仅为演示多图联动的基本思路,实际应用中可能需要根据具体需求进行适当调整和扩展。同时,ECharts 还提供了更多丰富的功能和配置选项,可以根据实际需要进行使用和定制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发财糕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值