Echarts简单的多表联动效果和添加水印和按钮切换数据效果

多表联动

多表联动效果指的是在多个表格之间建立一种交互关系,以便它们之间的操作或选择能够相互影响。通常情况下,多表联动效果可以通过以下方式之一实现:

  1. 数据关联: 当在一个表格中选择或操作某些数据时,另一个表格会根据这些选择或操作自动更新显示相关的数据。例如,如果在一个表格中选择了某个地区的销售数据,另一个表格会显示该地区的详细销售信息。

  2. 视觉联动: 当在一个表格中进行视觉操作(如缩放、平移等)时,另一个表格会以相同的方式进行相应的视觉变化。这种方式可以在多个表格之间保持一致的视觉效果,从而提供更好的用户体验。

多表联动效果通常用于数据分析、数据展示等场景,可以帮助用户更轻松地理解数据之间的关系,提高工作效率和数据分析的准确性。、

在这里我做了一个雷达图和饼图来进行联动效果(不会创Echarts的,可以去前面的文章)

一、雷达图和饼图

引入本地js

    <script src="/js/echarts.min.js" ></script>
    <script src="/js/echarts-wordcloud.min.js" ></script>

创建两个 div 元素用于显示图表

<div id="main" style="height: 600px;width: 600px;"></div>
<div id="main1" style="height: 600px;width: 600px;"></div>

初始化 echarts 实例,传入图表要绘制的 DOM 节点

var myChart = echarts.init(document.getElementById('main'));
var myChart1 = echarts.init(document.getElementById('main1'));

定义一个数组存储宠物数据和当前数据索引currentIndex

            // 当前数据索引
            var currentIndex = 0;
            // 定义一个数组存储宠物数据
            var data=[
                ['火花',39,52,43,65,60,50],
                ['水蓝蓝',44,48,65,43,50,64],
                ['喵喵',45,49,49,45,65,65],
                ['炎兽',35,60,40,55,58,48],
                ['水神兽',50,45,55,40,48,62],
                ['土巨兽',60,50,70,35,52,55],
                ['风鸟',45,55,50,60,58,45],
                ['雷兽',55,40,65,45,48,60],
                ['冰龙',60,45,50,55,65,40]
            ];

 雷达图的配置项

 // 雷达图的配置项
                var option = {
                    tooltip: { show: true },
                    title: { text: '洛克王国宠物' }, // 设置标题
                    legend: { data: [currentPet] }, // 设置图例
                    radar: {
                        indicator: [
                            { name: '精力', max: 100 },
                            { name: '物攻', max: 100 },
                            { name: '物防', max: 100 },
                            { name: '速度', max: 100 },
                            { name: '魔攻', max: 100 },
                            { name: '魔抗', max: 100 }
                        ]
                    },
                    series: [
                        {
                            name: currentPet,
                            type: 'radar',
                            data: [{ 
                                value: data[currentIndex].slice(1) // 使用 slice 方法获取除宠物名称外的数据
                            }]
                        }
                    ]
                };
    

饼图的配置项

// 饼图的配置项
                var option1 = {
                    tooltip: { show: true },
                    title: { text: currentPet + '占比图' }, // 设置标题
                    legend: { data: ['精力', '物攻', '物防', '速度', '魔攻', '魔抗'] }, // 设置图例
                    series:[
                        {
                            name: currentPet,
                            type: 'pie',
                            radius: '50%', // 设置饼图半径
                            data: [
                                { value: data[currentIndex][1], name: '精力' },
                                { value: data[currentIndex][2], name: '物攻' },
                                { value: data[currentIndex][3], name: '物防' },
                                { value: data[currentIndex][4], name: '速度' },
                                { value: data[currentIndex][5], name: '魔攻' },
                                { value: data[currentIndex][6], name: '魔抗' }
                            ],
                            emphasis: {
                                itemStyle: {
                                    shadowBlur: 10,
                                    shadowOffsetX: 0,
                                    shadowColor: 'rgba(0, 0, 0, 0.5)'
                                }
                            }
                        }
                    ]
                };

二、 将两个图表实例连接起来,以实现联动效果

    // 设置第一个图表的配置选项并渲染
    myChart.setOption(option);
    // 设置第二个图表的配置选项并渲染
    myChart1.setOption(option1);
    // 将两个图表实例连接起来,以实现联动效果
    echarts.connect([myChart, myChart1]);

--联动效果--

三、制作一个按钮把数据循环显示,这样课更详细的显示效果

1、添加一个按钮,点击按钮可以切换数据

        <!-- 添加一个按钮,点击按钮可以切换数据 -->
        <button id="changeButton" onclick="changeData()">切换数据</button> 
    

2、切换数据的函数

            // 切换数据的函数
            function changeData() {
                currentIndex = (currentIndex + 1) % data.length; // 循环更新索引
                updateCharts(); // 更新图表
            }
    

3、用 updateCharts() 更新图表

4、更新按钮的文字为当前宠物的名称

                // 更新按钮的文字为当前宠物的名称
                document.getElementById("changeButton").innerText = "当前宠物:" + currentPet;
    

四、添加水印

1、设置效果

        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 = '20px Microsoft Yahei';  //设置水印文字的字体
		ctx.translate(50, 50);  //设置水印文字的偏转值
		ctx.rotate(-Math.PI / 4);  //设置水印旋转的角度
		ctx.fillText(waterMarkText, 0, 1);  //设置填充水印

   2、调用修改为背景

                    //水印
                    backgroundColor:{
                    image:canvas,
                    },

五、完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>动态图</title>
    <script src="/js/echarts.min.js" ></script>
    <script src="/js/echarts-wordcloud.min.js" ></script>
</head>
<style>
    /* 添加自定义样式 */
    #changeButton {
        position: absolute; /* 设置按钮的定位方式为绝对定位 */
        top: 20px; /* 设置按钮距离页面顶部的距离 */
        right: 20px; /* 设置按钮距离页面右侧的距离 */
        z-index: 999; /* 设置按钮的层级,使其在最上层 */
    }
</style>
<body>
        <!-- 创建两个 div 元素用于显示图表 -->
        <div id="main" style="height: 600px;width: 600px;"></div>
        <div id="main1" style="height: 600px;width: 600px;"></div>
        <!-- 添加一个按钮,点击按钮可以切换数据 -->
        <button id="changeButton" onclick="changeData()">切换数据</button> 
    
        <script>
            // 初始化 echarts 实例,传入图表要绘制的 DOM 节点
            var myChart = echarts.init(document.getElementById('main'));
            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 = '20px Microsoft Yahei';  //设置水印文字的字体
		ctx.translate(50, 50);  //设置水印文字的偏转值
		ctx.rotate(-Math.PI / 4);  //设置水印旋转的角度
		ctx.fillText(waterMarkText, 0, 1);  //设置填充水印
        


            // 当前数据索引
            var currentIndex = 0;
            // 定义一个数组存储宠物数据
            var data=[
                ['火花',39,52,43,65,60,50],
                ['水蓝蓝',44,48,65,43,50,64],
                ['喵喵',45,49,49,45,65,65],
                ['炎兽',35,60,40,55,58,48],
                ['水神兽',50,45,55,40,48,62],
                ['土巨兽',60,50,70,35,52,55],
                ['风鸟',45,55,50,60,58,45],
                ['雷兽',55,40,65,45,48,60],
                ['冰龙',60,45,50,55,65,40]
            ];
    
            // 切换数据的函数
            function changeData() {
                currentIndex = (currentIndex + 1) % data.length; // 循环更新索引
                updateCharts(); // 更新图表
            }
    
            // 更新图表数据和显示
            function updateCharts() {
                var currentPet = data[currentIndex][0]; // 获取当前宠物的名称
                // 更新按钮的文字为当前宠物的名称
                document.getElementById("changeButton").innerText = "当前宠物:" + currentPet;
    
                // 雷达图的配置项
                var option = {
                    //水印
                    backgroundColor:{
                    image:canvas,
                    },
                    tooltip: { show: true },
                    title: { text: '洛克王国宠物' }, // 设置标题
                    legend: { data: [currentPet] }, // 设置图例
                    radar: {
                        indicator: [
                            { name: '精力', max: 100 },
                            { name: '物攻', max: 100 },
                            { name: '物防', max: 100 },
                            { name: '速度', max: 100 },
                            { name: '魔攻', max: 100 },
                            { name: '魔抗', max: 100 }
                        ]
                    },
                    series: [
                        {
                            name: currentPet,
                            type: 'radar',
                            data: [{ 
                                value: data[currentIndex].slice(1) // 使用 slice 方法获取除宠物名称外的数据
                            }]
                        }
                    ]
                };
    
                // 饼图的配置项
                var option1 = {
                    //水印
                    backgroundColor:{
                    image:canvas,
                    },
                    tooltip: { show: true },
                    title: { text: currentPet + '占比图' }, // 设置标题
                    legend: { data: ['精力', '物攻', '物防', '速度', '魔攻', '魔抗'] }, // 设置图例
                    series:[
                        {
                            name: currentPet,
                            type: 'pie',
                            radius: '50%', // 设置饼图半径
                            data: [
                                { value: data[currentIndex][1], name: '精力' },
                                { value: data[currentIndex][2], name: '物攻' },
                                { value: data[currentIndex][3], name: '物防' },
                                { value: data[currentIndex][4], name: '速度' },
                                { value: data[currentIndex][5], name: '魔攻' },
                                { value: data[currentIndex][6], name: '魔抗' }
                            ],
                            emphasis: {
                                itemStyle: {
                                    shadowBlur: 10,
                                    shadowOffsetX: 0,
                                    shadowColor: 'rgba(0, 0, 0, 0.5)'
                                }
                            }
                        }
                    ]
                };
                
    // 使用 setOption 方法分别设置雷达图和饼图的配置项

    // 设置第一个图表的配置选项并渲染
    myChart.setOption(option);
    // 设置第二个图表的配置选项并渲染
    myChart1.setOption(option1);
    // 将两个图表实例连接起来,以实现联动效果
    echarts.connect([myChart, myChart1]);

            }
            updateCharts(); // 初始化显示第一组数据
        </script>
</body>
</html>

六、显示效果(屏幕显示的效果不全,只能分开截屏,‘ 哭笑 ’)

七、可以点击按钮切换数据

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

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

相关文章

【opencv】示例-stiching.cpp 图像拼接

#include "opencv2/imgcodecs.hpp" // 导入opencv图像编码功能库 #include "opencv2/highgui.hpp" // 导入opencv高层用户界面功能库 #include "opencv2/stitching.hpp" // 导入opencv图像拼接功能库#include <iostream> // 导入输入输出…

Tool:VRAM的简介、查询电脑VRAM的常用方法

Tool&#xff1a;VRAM的简介、查询电脑VRAM的常用方法 目录 VRAM的简介 查询电脑VRAM的常用方法 1、对于Windows系统 T1、设置-系统-显示查询法 T2、使用 DirectX 诊断工具&#xff1a; T3、使用系统信息工具&#xff1a; 2、对于Linux系统 T1、使用nvidia-smi命令&…

IO流基本流

目录 什么是IO流 IO流的体系 字节流 FileOutputStream FileInputStream 字符集 字符流 FileReader FileWriter 字节流和字符流的使用场景 什么是IO流 内存不能永久化存储,程序停止,数据丢失,所以要添加一个存档功能,存储到硬盘的文件,我们要知道文件在哪里和如何传…

Java实现二叉树(下)

1.前言 http://t.csdnimg.cn/lO4S7 在前文我们已经简单的讲解了二叉树的基本概念&#xff0c;本文将讲解具体的实现 2.基本功能的实现 2.1获取树中节点个数 public int size(TreeNode root){if(rootnull){return 0;}int retsize(root.left)size(root.right)1;return ret;}p…

Python 全栈 Web 应用模板:成熟架构,急速开发 | 开源日报 No.223

tiangolo/full-stack-fastapi-template Stars: 15.6k License: MIT full-stack-fastapi-template 是一个现代化的全栈 Web 应用模板。 使用 FastAPI 构建 Python 后端 API。使用 SQLModel 进行 Python SQL 数据库交互&#xff08;ORM&#xff09;。Pydantic 用于数据验证和设…

excel里如何的科学计数法的数字转换成数值?

比如下图&#xff0c;要想把它们转换成3250跟1780&#xff0c;有什么快捷的办法吗&#xff1f; 科学计数法在excel里的格式&#xff0c;与我们常规在数学上写的有差异。这个转换可以这样做&#xff1a; 1.转换后的效果&#xff1a; 2.问题分析 题目中所附截图&#xff0c;单元…

HTML重要标签重点及属性(表格表单列表)——之转生在异世界学前端

表格标签 table是用于定义表格的标签 tr是用于定义表格的行 td是用来定义表格的列&#xff0c;th是表头一般只有一个表头会加粗 表格属性border是设置边框值为1;1是有边框&#xff0c; align设置居中对齐方式center&#xff0c;left&#xff0c;right cellpadding设置文字…

Linux操作系统中关于用户管理的操作

创建新用户 useradd 【选项】 用户名 在/etc/passwd中以追加的方式在passwd的最后一行添加用户信息。 可以使用命令tail -n 1/etc/passwd查看文件的最后一行内容。 ls /home/首先/home/这是普通用户的家目录&#xff0c; 在/home/下会有一个跟用户名同名的家目录&#xf…

Arrow, 一个六边形的 Python 时间库

文章目录 Arrow, 一个六边形的 Python 时间库第一部分&#xff1a;背景介绍第二部分&#xff1a;库是什么&#xff1f;第三部分&#xff1a;如何安装这个库&#xff1f;第四部分&#xff1a;库函数使用方法第五部分&#xff1a;场景应用第六部分&#xff1a;常见Bug及解决方案第…

Mac 软件清单

~自留备用~ Macbook用了几年之后, 512G的内置硬盘有些紧张了, 这几天总是提示空间不足, 就重装了下系统, 重装之后竟然不记得有些软件的名字和下载链接, 特此记录 Office 办公套件 直接从微软官网下载Office 安装包https://officecdnmac.microsoft.com/pr/C1297A47-86C4-4C1F…

前端三剑客 —— JavaScript (第六节)

目录 内容回顾 BOM编程 DOM编程* document对象 document对象的属性 document对象的方法 DOM对象节点 操作DOM对象内容 操作DOM对象的属性 --- DOM对象.属性名称 --- DOM对象[属性名称] --- 调用系统API &#xff08;Application Program interface&#xff09;&#…

汇编语言知识点整理(应付考试专用,想学习找其他的)

1 基础知识 1.1 信息在计算机内部的表示和存储 1.1.1 信息存储的基本概念 信息在计算机内部是以二进制数据的形式在存储器中存取的。介绍两个基本概念&#xff1a; 位&#xff08;Bit&#xff09; 计算机中最小的数据单位&#xff0c;一位有0、1两状态。Bit是计算机中最小…

对常见FTP客户端/服务器的调查与分析

前言 主要是想看看常见的服务器和客户端是如何实现协议中要求的功能的&#xff0c;。 比如RF959要求的记录结构&#xff08;Record Structure&#xff09;、页结构&#xff08;Page Structure&#xff09;、Block Mode、Compress Mode&#xff0c;看起来就很抽象。 实测发现…

【算法】回溯:与递归,dfs的同质与分别,剪枝与恢复现场的详细理解,n皇后的回溯解法及算法复杂度分析。

目录 ​编辑 1.什么是回溯 2.关于剪枝 3.关于恢复现场 4.题目&#xff1a;二叉树的所有路径&#xff08;凸显恢复现场&#xff1a;切实感受回溯与深搜&#xff09; 问题分析 ①函数设置为&#xff1a;void Dfs(root) ②函数设置为&#xff1a;void Dfs(root,path) 解题思想&…

Day101:漏洞发现-漏扫项目篇NucleiYakitGobyAfrogXrayAwvs联动中转被动

目录 特征类-三方Poc调用&模版Poc调用 案例1&#xff1a;单点对某特征点进行安全评估 Goby-综合类 Nuclei-较综合类 Afrog-特征类 Yakit-可特征可综合 案例2&#xff1a;新型对某特征点进行安全评估 综合类-主动漏扫&中转联动&被动联动 案例1&#xff1a;…

给自己的机器人部件安装单目摄像头并实现gazebo仿真功能

手术执行器添加摄像头 手术执行器文件夹surgical_new内容展示如何添加单目摄像头下载现成的机器人环境文件启动仿真环境 手术执行器文件夹surgical_new内容展示 进入src文件夹下选择进入vision_obliquity文件夹 选择launch 有两个可用gazebo中rviz展示的launch文件&#xff0…

当我们使用git 上传码云的时候报错:Push rejected Push to origin/master was rejected

在我们推送成果去git&#xff08;码云&#xff09;的过程中报错&#xff1a;Push rejected Push to origin/master was rejected 这个问题是我们在推的时候被拒绝了 控制台报错&#xff1a; 18:46:19.665: [zengqingqingandluoxuwen] git -c credential.helper -c core.quote…

软件无线电安全之GNU Radio基础 -上

GNU Radio介绍 GNU Radio是一款开源的软件工具集&#xff0c;专注于软件定义无线电&#xff08;SDR&#xff09;系统的设计和实现。该工具集支持多种SDR硬件平台&#xff0c;包括USRP、HackRF One和RTL-SDR等。用户可以通过GNU Radio Companion构建流程图&#xff0c;使用不同…

嵌入式学习54-ARM3(中断和时钟)

知识零碎&#xff1a; import &#xff0c;定义表示这是一个外部变量的标号&#xff0c;不是在本程序定义的 export &#xff0c;表示本程序里面用到的变量提供给 其他模块 调用的。 按键模块中&#xff0c;K1和K6所连接的高电阻&#xff0c;根据外部变化变化 …

HiveQL练习(hive3.x)

零、准备工作 1. Hive环境安装 参见搭建Hive 3.x环境&#xff08;CentOS 9 Hadoop3.x&#xff09; 2. 准备数据 在虚拟机HOME目录创建如下文件内容&#xff1a; cd /root vi emp.csv内容如下&#xff1a; 7369,SMITH,CLERK,7902,1980/12/17,800,,20 7499,ALLEN,SALESMAN…