可视化 | 【echarts】金字塔图

文章目录

  • 📚js
    • 🐇总体框架
    • 🐇option

在这里插入图片描述

  • html和css同可视化 | 【echarts】渐变条形+折线复合图,主要是js的差别。

📚js

🐇总体框架

  1. 使用echarts.init方法初始化了一个 ECharts 实例,指定了一个 div 元素作为图表的容器。
  2. 数据预处理,将数值转换为百分比。
  3. 定义图表的配置项option,其中包括了图表的标题、提示框、x 轴、y 轴、数据系列以及数据缩放功能等等。
  4. 通过myChart.setOption将配置项应用到echarts实例。
  5. 绑定事件处理函数myChart.resize以便让图表自适应新的窗口大小,确保图表在不同尺寸的屏幕上能够正确显示。
    var myChart = echarts.init(document.getElementById('test1'));var maleData = [14, 4, 10, 66,54, 98, 116, 144,210, 358, 484, 562,706, 671, 566, 345,200, 92, 24, 12,0.0
    ];var femaleData = [0, 0, 0, 15, 19,29, 30, 25, 27, 34,36, 48, 36, 56, 60,48, 36, 12, 8, 0,0.0
    ];var maleTotal = maleData.map(function(x) {return Math.abs(x);
    }).reduce(function(a, b) {return a + b;
    });var femaleTotal = femaleData.map(function(x) {return Math.abs(x);
    }).reduce(function(a, b) {return a + b;
    });var malePercentage = maleData.map(function(x){return -(x / maleTotal * 100); 
    });var femalePercentage = femaleData.map(function(x){return x / femaleTotal * 100;
    });var option = {};if (option && typeof option === 'object') {myChart.setOption(option);
    }
    window.addEventListener('resize', myChart.resize);
    

🐇option

  • 标题、悬浮框、图例

    title: {text: '唐朝人口金字塔',  // 设置标题文本为“唐朝人口金字塔”left: 'center',         // 标题水平居中top: '4%',              // 标题距离顶部的距离为4%textStyle: {color: '#333',      // 标题字体颜色fontSize: 24,       // 标题字体大小fontWeight: 'bold', // 标题字体加粗fontFamily: 'KaiTi, serif'  // 标题字体样式,楷体或Serif字体}},tooltip: {trigger: 'axis',           // 提示框触发类型为坐标轴axisPointer: {type: 'shadow'         // 坐标轴指示器类型为阴影},formatter: function (params) {return params[0].name + '<br/>' +params[0].seriesName + ': ' + Math.abs(maleData[params[0].dataIndex]) + ' (' + Math.abs(params[0].data).toFixed(2) + '%)' + '<br/>' +params[1].seriesName + ': ' + Math.abs(femaleData[params[0].dataIndex]) + ' (' + Math.abs(params[1].data).toFixed(2) + '%)';// 提示框内容格式化函数,params参数包含了鼠标悬停时的数据}},legend: {data: ['男性', '女性'],  // 图例数据为“男性”和“女性”align: 'left',             // 图例左对齐top: '6%',                 // 图例距离顶部的距离为6%right: 2                   // 图例距离右边的距离为2}
    
  • X轴Y轴

    • 在ECharts中,轴有以下类型:value:数值轴,适用于连续型数据,如年龄、温度等。 category: 类目轴,适用于离散型数据,如商品名称、地区等。time:时间轴,用于显示时间型数据。
    xAxis: {type: 'value',axisLabel: {formatter: function (value) {//自定义X轴标签的格式化函数,返回绝对值百分比return Math.abs(value)+'%';}}},yAxis: {type: 'category',data: ['0-4', '5-9', '10-14', '15-19','20-24', '25-29', '30-34', '35-39', '40-44','45-49', '50-54', '55-59', '60-64', '65-69','70-74', '75-79', '80-84', '85-89', '90-94','95-99', '100 + ']}
    
  • 数据系列的配置

    • 金字塔的本质就是堆叠柱状图
    • 将男性数据处理为负数,但x轴显示又是正常百分比显示,通过堆叠实现金字塔效果。
    series: [{name: '男性',  // 数据系列的名称type: 'bar',   // 系列类型为条形图stack: 'total',  // 数据堆叠,同一个堆叠组的数据会堆叠显示itemStyle: {// 条形图的颜色渐变设置color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0, color: '#3d8e86' },{ offset: 0.5, color: '#5da39d' },{ offset: 1, color: '#88bfb8' }])},emphasis: {focus: 'series'  // 强调设置},data: malePercentage  // 男性数据百分比},{name: '女性',  // 数据系列的名称type: 'bar',   // 系列类型为条形图stack: 'total',  // 数据堆叠emphasis: {focus: 'series'  // 强调设置},itemStyle: {// 条形图的颜色渐变设置color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0, color: '#d2a36c' },{ offset: 0.5, color: '#d5c8a0' },{ offset: 1, color: '#dfd6b8' }])},data: femalePercentage  // 女性数据百分比}
    ]
    

  • 完整代码包

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css-盒子等样式学习

盒子居中&#xff0c;继承外层盒子的宽高 兼容性&#xff08;border-box&#xff09;将边框收到盒子内部 初始化div 不用管box-setting content-box 还原 创建为一个类 &#xff0c;让所有需要还原的类 进行继承 padding 用法表示margin上下左右边距 body 外边距&…

【Qt】信号和槽

需要云服务器等云产品来学习Linux的同学可以移步/-->腾讯云<--/-->阿里云<--/-->华为云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 一、Qt中的信号和槽 1、信号 2、槽 3、Q_OBJECT 二、Qt中的connect函…

从零开始学习Python控制开源Selenium库自动化浏览器操作,实现爬虫,自动化测试等功能(一)

介绍Selenium &#xff1a; Selenium是一个用于自动化浏览器操作的开源工具和库。它最初是为Web应用测试而创建的&#xff0c;但随着时间的推移&#xff0c;它被广泛用于Web数据抓取和网页自动化操作。Selenium 支持多种编程语言&#xff0c;包括Python&#xff0c;Java&#x…

vectorCast添加边界值分析测试用例

1.1创建项目成功后会自动生成封装好的函数,在这些封装好的函数上点击右键,添加边界值分析测试用例,如下图所示。 1.2生成的用例模版是不可以直接运行的,需要我们分别点击它们,让它们自动生成相应测试用例。如下图所示,分别为变化前和变化后。 1.3点击选中生成的测试用例,…

实现SERVLET应用程序

实现SERVLET应用程序 Smart Software 的开发人员希望开发一个Web应用程序,使用servlet显示保存在表中的雇员信息。该应用程序需要有用户界面,用户可在该用户界面中指定要查看雇员数据的雇员ID。该界面还应显示网站被访问的次数。 解决方案 要解决上述问题,需要执行以下任务…

Java中的包、类、接口说明

写在开头 包、类、接口、方法、变量、参数、代码块,这些都是构成Java程序的核心部分,即便最简单的一段代码里都至少要包含里面的三四个内容,这两天花点时间梳理了一下,理解又深刻了几分。 Java中的包 Java 定义了一种名字空间,称之为包:package。一个类总是属于某个包…

在 EggJS 中实现 Redis 上锁

配置环境 下载 Redis Windows 访问 https://github.com/microsoftarchive/redis/releases 选择版本进行下载 - 勾选 [配置到环境变量] - 无脑下一步并安装 命令行执行&#xff1a;redis-cli -v 查看已安装的 Redis 版本&#xff0c;能成功查看就表示安装成功啦~ Mac brew i…

Flink SQL

Flink SQL 来源&#xff1a;B站尚硅谷 sql-client准备 Table API和SQL是最上层的API&#xff0c;在Flink中这两种API被集成在一起&#xff0c;SQL执行的对象也是Flink中的表&#xff08;Table&#xff09;&#xff0c;所以我们一般会认为它们是一体的。Flink是批流统一的处理…

【JavaEE】文件操作与IO

作者主页&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文于《JavaEE》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造&…

【Oracle】收集Oracle数据库内存相关的信息

文章目录 【Oracle】收集Oracle数据库内存相关的信息收集Oracle数据库内存命令例各命令的解释输出结果例参考 【声明】文章仅供学习交流&#xff0c;观点代表个人&#xff0c;与任何公司无关。 编辑|SQL和数据库技术(ID:SQLplusDB) 【Oracle】收集Oracle数据库内存相关的信息 …

详细版Git的下载安装与配置(Windows)

一、git的下载 Git是一个非常好用的版本控制工具。下载地址如下&#xff1a;Git - Downloads。建议使用国内浏览器下载&#xff0c;因为不用翻墙&#xff0c;速度快。 当你用浏览器去访问上面的地址后&#xff0c;下载页面会自动识别你的电脑系统&#xff0c;如下 点击&#…

鸿蒙开发环境配置-Windows

背景 入局鸿蒙开发&#xff0c;发现在 Windows 下面配置安装相关环境并没有像 Mac 一样简单&#xff0c;过程中遇到了一些问题记录一下。 Devceo Studio 下载安装 目前鸿蒙的 IDE 最新版是 4.0&#xff0c;通过这个连接可以下载&#xff0c;鸿蒙4.0下载连接。选择符合我们电…