可视化 | 【echarts】渐变条形+折线复合图

news2024/11/13 14:52:33

文章目录

  • 📚html + css
  • 📚js
    • 🐇总体框架
    • 🐇option配置项

在这里插入图片描述

📚html + css

  • html:在这主要是用于整合,将html、css、js连接在一块,虽然单个模板代码量不大,但还是先分开,之后模板运用更自如。
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>可视化模板一</title>
        <link rel="stylesheet" href="./style.css">
    </head>
    <body>
        <div id="test1"></div>
    </body>
    <!-- echarts引入 -->
    <script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
    <script src="./script.js"></script>
    </html>
    
  • css:这里的css主要实现了以下几个效果:
    • ①加了一个浅浅的背景色
    • ②将图标框水平垂直居中
    • ③以视口大小为准作60%缩放
    body{
        background-color: #f5f2e9;
    }
    #test1 {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        height: 60vh;
        width: 60vw;
    }
    

📚js

🐇总体框架

  1. 使用 echarts.init方法初始化了一个 ECharts 实例,指定了一个 div 元素作为图表的容器。
  2. 定义图表的配置项option,其中包括了图表的标题、提示框、x 轴、y 轴、数据系列以及数据缩放功能等等。
  3. 通过myChart.resize将配置项应用到echarts实例。
  4. 绑定事件处理函数myChart.resize以便让图表自适应新的窗口大小,确保图表在不同尺寸的屏幕上能够正确显示。
    // 基于准备好的dom,初始化echarts实例
    var myChart = echarts.init(document.getElementById('test1'));
        
    // 指定图表的配置项和数据
    var option = {};
    
    // 使用刚指定的配置项和数据显示图表。
    if (option && typeof option === 'object') {
        myChart.setOption(option);
    }
    //让图表自适应新的窗口大小
    window.addEventListener('resize', myChart.resize);
    

🐇option配置项

  • 标题
    • text: '唐朝历年人数统计':指定了标题的文本内容为“唐朝历年人数统计”。
    • left: 'center':将标题水平居中显示。
    • top: '6%':指定了标题距离容器顶部的距离为容器高度的 6% 处。这里使用百分比是为了相对于容器的高度来设定距离,而不是使用固定的像素值。
    • textStyle:用于设置标题的文本样式。其中包含了以下几个属性:
      • color: '#333':指定了标题文本的颜色为深灰色。
      • fontSize: 24:设置了标题文本的字号为 24 像素。
      • fontWeight: 'bold':将标题文本设置为粗体显示。
      • fontFamily: 'KaiTi, serif':指定了标题文本的字体为楷体(KaiTi),如果设备不支持楷体,则会回退到默认的衬线字体。
    title: {
            text: '唐朝历年人数统计', 
            left: 'center',
            top: '6%',
            textStyle: {
                color: '#333', 
                fontSize: 24, 
                fontWeight: 'bold', 
                fontFamily: 'KaiTi, serif'
            }
        }
    
  • 鼠标悬浮提示框
    • trigger: 'axis':指定了触发类型为坐标轴触发,即在鼠标指向坐标轴时触发提示。
    • formatter: function (params) { ... }:定义了一个回调函数,用于自定义提示框内容的格式
      • 通过判断 params[0].dataIndex 的值,根据不同的年份数据索引来返回不同的提示信息:如果 dataIndex 等于 2,表示年份为 650 年,返回的提示包含了人数和一些相关事件的信息。 类似地,针对其他特定的年份,返回相应的提示信息,例如 690 年、712 年、755 年等。
      • 对于其他年份,则默认返回格式为“年份: 人数(人)”的提示信息。
    tooltip: {
            trigger:'axis',
            formatter: function (params) {
                if (params[0].dataIndex === 2) { // Check for the year 650
                    return params[0].name + '年: ' + params[0].value + '(人)<br>公元649年,李治继位';
                }else if (params[0].dataIndex === 6) { // Check for the year 690
                    return params[0].name + '年: ' + params[0].value + '(人)<br>公元690年,武则天继位';
                }else if (params[0].dataIndex === 8) { 
                    return params[0].name + '年: ' + params[0].value + '(人)<br>公元712年,李隆基继位';
                }else if (params[0].dataIndex === 12) { 
                    return params[0].name + '年: ' + params[0].value + '(人)<br>公元755年,安史之乱开始';
                }else if (params[0].dataIndex === 13) { 
                    return params[0].name + '年: ' + params[0].value + '(人)<br>公元763年,安史之乱结束';
                }else if (params[0].dataIndex === 20) { 
                    return params[0].name + '年: ' + params[0].value + '(人)<br>公元835年,甘露之变';
                }else {
                    return params[0].name + '年: ' + params[0].value + '(人)';
                }
            }
        }
    
  • X轴Y轴
    • name:轴的名称。
    • data:数据(x轴的数据为一个包含年份的数组)
    • axisLine:轴线样式
      • lineStylecolor——颜色,width——宽度
    • type:类型(指定y轴类型为数值型)
    • max:y轴最大值
    • show:是否显示
    • intercal:刻度间隔
    xAxis: {
        name:'年份',
        data: ["630","640","650","660","670","680","690","700","710","720","730","740","750","760","770","780","790","800","810","820","830","840","850","860","870","880","890","900"],
        axisLine: {
            lineStyle: {
                color: '#151d29',
                width: 2
            }
        }
    },
    yAxis: {
        type: 'value',
        max: 2000,
        name: '数量统计',
        show:true,
        interval: 400,
        axisLine: {
            lineStyle: {
                color: '#151d29',
                width: 2
            }
        }
    }
    
  • 数据系列的配置:其中包含了柱状图和折线图两个数据系列的设置
    • 我们需要条形图和折线图两个数据系列,于是每个系列用{}包含,间隔用,隔开,整体用[]
    • type:类型指定,条形图是bar、折线图是line
    • barWidth:指定柱状图的宽度
    • showBackground:是否显示背景
    • itemStyle:样式设置(如color)
      • echarts.graphic.LinearGradient:创建线性渐变
      • (0, 0, 0, 1) 是线性渐变的方向,表示从 (0, 0) 点到 (0, 1) 点进行渐变,即从上到下的渐变方向。
      • [{ offset: 0, color: '#ba5b49' }, { offset: 0.7, color: '#d2a36c' }, { offset: 1, color: '#dfd6b8' }] 是渐变的颜色配置,它表示从起始点到偏移值为 0 处使用颜色 ‘#ba5b49’,到偏移值为 0.7 处使用颜色 ‘#d2a36c’,最终到达终点时使用颜色 ‘#dfd6b8’。
    • emphasis:高亮样式设置(即鼠标悬浮后的颜色变化)
    • data:数据项的具体数值
    • yAxisIndex:指定对应的y轴(有时候可以是双y轴)
    • smooth:针对折线图,是指平滑曲线
    series: [{
            type: 'bar',
            barWidth : '70%',
            showBackground: true,
            itemStyle: {
                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                { offset: 0, color: '#d2a36c' },
                { offset: 0.5, color: '#d5c8a0' },
                { offset: 1, color: '#dfd6b8' }
                ])
            },
            emphasis: {
                itemStyle: {
                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                    { offset: 0, color: '#ba5b49' },
                    { offset: 0.7, color: '#d2a36c' },
                    { offset: 1, color: '#dfd6b8' }
                ])
                }
            },
            data: [1357, 969, 1063, 1355, 1444, 1350, 1438, 1412, 1760, 1508, 1451, 1817, 1532, 1431, 1811, 1780, 1830, 1530, 1509, 1401, 1204, 1053, 380, 76, 36, 19, 12, 6],
            yAxisIndex: 0
        },{
            type: 'line',
            smooth:true,
            data: [1357, 969, 1063, 1355, 1444, 1350, 1438, 1412, 1760, 1508, 1451, 1817, 1532, 1431, 1811, 1780, 1830, 1530, 1509, 1401, 1204, 1053, 380, 76, 36, 19, 12, 6],
            yAxisIndex: 0
        }]
    
  • 底部滑动条(数据缩放功能):dataZoom允许用户在图表中选择特定区域进行放大或缩小操作。
    • 第一个对象表示外部数据缩放组件,show: true表示显示该数据缩放组件。start: 0表示数据缩放的起始位置为 0,即最左边。end: 100表示数据缩放的结束位置为 100,即最右边。
    • 第二个对象表示内部数据缩放组件,type: 'inside' 表示内部数据缩放组件,允许在图表内部进行缩放操作。start: 0 表示数据缩放的起始位置为 0,即最左边。 end: 100 表示数据缩放的结束位置为 100,即最右边。
    dataZoom: [
            {
                show: true,
                start: 0,
                end: 100
            },
            {
                type: 'inside',
                start: 0,
                end: 100
            }
        ]
    

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

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

相关文章

AI嵌入式K210项目(13)-Camera

文章目录 前言一、硬件介绍二、K210对硬件的支持实验过程总结 前言 我们这款开发板应该是最便宜的AI开发板了吧&#xff0c;200RMB左右&#xff0c;搭载1TOPS处理能力的K210芯片&#xff0c;丰富的外设接口&#xff0c;内置超多算法&#xff0c;除此之外&#xff0c;开发板还带…

重学Java 10 面向对象

正是风雨欲来的时候&#xff0c;火却越烧越旺了 ——24.1.20 重点 1.为何使用面向对象思想编程 2.如何使用面向对象思想编程 3.何时使用面向对象思想编程 4.利用代码去描述世间万物的分类 5.在一个类中访问另外一个类中的成员 -> new对象 6.成员变量和局部变量的区别 一…

AutoRuns下载安装使用教程(图文教程)超详细

「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 AutoRuns 是微软提供的一款「启动项管理」工具&#xff0c;可以检查开机自动加载的所有程…

写点啥 内核调优吧

一、命令xargs --------------- 参数替换 由于很多命令不支持管道|来传递参数&#xff0c;xargs用于产生某个命令的参数&#xff0c;xargs 可以读入 stdin 的数 据&#xff0c;并且以空格符或回车符将 stdin 的数据分隔成为参数&#xff0c;另外许多命令不能接受过多参数&am…

【论文解读】LERF:语言嵌入的辐射场(ICCV 2023 Oral)

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/abs/2303.09553 项目主页&#xff1a;https://lerf.io](https://lerf.io 图 1&#xff1a;语言嵌入辐射场 (LERF)。 LERF 将 CLIP 表示建立在密集、多尺度的 3D 场中。…

Beyond Compare 4 代码对比如何重新激活使用30天

Beyond Compare 4 代码对比如何重新激活使用30天 Beyond Compare 4 是一款强大的文件比较工具&#xff0c;但只有30天的试用期。如果想在试用期结束后继续使用该软件&#xff0c;可以通过修改注册表的方式来实现。具体步骤如下&#xff1a; 1 同时按住“Win”“R”键&#xf…

vue流程图

效果图 组件 <template><div class"processBox" v-if"list.length"><div class"childs"><div class"child" v-for"(item,index) in list" :key"item.id -child-index"><div class&q…

免费三款备受推崇的爬虫软件

在信息爆炸的时代&#xff0c;爬虫软件成为了数据采集、信息挖掘的得力工具。为了解决用户对优秀爬虫软件的需求&#xff0c;本文将专心分享三款备受推崇的爬虫软件&#xff0c;其中特别突出推荐147采集软件&#xff0c;为您开启爬虫软件的奇妙世界。 一、爬虫软件的重要性 爬…

【 Qt 快速上手】-②- Qt 环境搭建

文章目录 1. Qt 开发工具概述1.1 Qt Creator 介绍1.2 Visual Studio 介绍1.3 Eclipse 介绍 2. Qt SDK 的下载与安装2.1 Qt SDK 的下载2.2 Qt SDK 的安装2.3 验证 Qt SDK 安装是否成功2.4 Qt 环境变量配置 1. Qt 开发工具概述 Qt 开发环境需要安装三个部分&#xff1a; C编译器…

配置zabbix平台对数据库以及主从状态的监控

引言&#xff1a;明人不说暗话&#xff0c;今天分享下配置zabbix平台对数据库以及主从状态的监控 准备好zabbix监控平台&#xff08;zabbix-server端&#xff09;例10.12.153.235 db1客户端&#xff08;zabbix-agent&#xff09;例10.12.153.73 1.安装Zabbix存储库 # rpm -Uv…

内衣洗衣机哪个牌子好用?四款小型洗衣机全自动推荐

说起内衣洗衣机很多小伙伴都不陌生&#xff0c;对于很多小伙伴来说内衣洗衣机真的是一个提高幸福感的小家电&#xff0c;市面上的内衣洗衣机无论从功能和配置上都有着很大的区别&#xff0c;没有做攻略的小伙伴很容易就踩雷了&#xff0c;今天给大家分享四款内衣洗衣机&#xf…

进程调度算法

文章目录 主要内容一.进程调度算法1.各调度算法思想2.程序流程图3.源代码代码如下&#xff08;示例&#xff09;: 4.运行结果分析5.先来先服务算法 6.短作业优先算法7.高响应优先算法8.算法结果对比 总结 主要内容 一.进程调度算法 1.各调度算法思想 先来先服务算法&#xff0…

Mysql:重点且常用的操作和理论知识整理 ^_^

目录 1 基础的命令操作 2 DDL 数据库定义语言 2.1 数据库操作 2.2 数据表操作 2.2.1 创建数据表 2.2.2 修改和删除数据表 2.2.3 添加外键 3 DML 数据库操作语言 3.1 插入语句(INSERT) 3.2 修改语句(UPDATE) 3.3 删除语句 3.3.1 DELETE命令 3.3.2 TRUNCATE命令 4 …

java.sql.SQLException: Failed to fetch schema of XXX 问题

遇到问题&#xff1a;java.sql.SQLException: Failed to fetch schema of pay_record表 i.s.r.d.s.s.c.AbstractTableMetaCache : get table meta of the table pay_record error: Failed to fetch schema of pay_record 原因分析&#xff1a; springcloud项目中使用了se…

Yaklang 中的类型和变量

Yaklang 的类型其实非常简单&#xff0c;我们仅需要记住如下类型即可 string 字符串类型&#xff0c;用以快速构建一个字符串int 整数类型&#xff1a;在 64 位机中&#xff0c;int 和 int64 是一样的float 浮点类型&#xff0c;用来定义和表示浮点数byte 本质上等同于 uint8u…

docker安装marcocesarato/php-conventional-changelog报错

composer require --dev marcocesarato/php-conventional-changelog --no-update “marcocesarato/php-conventional-changelog”: “^1.17” 在小皮环境没问题&#xff0c;在dockerswoole环境下报错 "scripts": {"changelog": "conventional-chang…

采用云端SaaS服务的云HIS基层医院信息管理系统源码

目录 一、日常运维工作内容 二、科室巡查工作 三、网络安全管理工作内容 四、业务能力提升学习 云HIS系统业务 一、日常运维工作内容 1. 系统监控&#xff1a;每天早晨第一件事就是打开电脑&#xff0c;查看各个系统的运行状况。通过监控系统&#xff0c;可以实时了解到服…

大数据质量管制规范示例

大数据质量管制规范示例 一、前提概要二、相关概念三、管理原则四、治理委员五、应用管理六、查验方式七、考核比率八、扣分标准九、责任划分十、追责范围十一、其它条例十二、总结 一、前提概要 在当今大数据信息时代&#xff0c;大数据平台&#xff08;大数据平台开发规范示…

【ChatGPT】利用ChatGPT将图片转换成JSON文件

前言 我在创建自己的GPT时,通常会上传一些JSON文件作为知识库,我还制作了一些脚本工具,将PDF文件转换成JSON文件。但是在这个过程中产生一个问题,PDF文件中会有一些图表,JSON文件就不能存储和表达这些图表的内容了。那该怎么办呢?这里跟大家介绍一个方法,可以有效地将图…

【论文笔记】Fully Sparse 3D Panoptic Occupancy Prediction

原文链接&#xff1a;https://arxiv.org/abs/2312.17118 1. 引言 现有的3D占用预测方法建立密集的3D特征&#xff0c;没有考虑场景的稀疏性&#xff0c;因此难以满足实时要求。此外&#xff0c;这些方法仅关注语义占用&#xff0c;无法区分实例。 本文认为场景的稀疏性包含两…