巧用VTable打造炫酷金字塔图表
用VTable实现人口金字塔
数据准备
const records = [
[0, 5634674, 5063545],
[1, 5705095, 5104886],
[2, 6428332, 5727205],
[3, 7693489, 6821534],
[4, 8161021, 7203100],
[5, 9715173, 8532301],
[6, 9650591, 8437180],
[7, 9219192, 8023112],
[8, 9895275, 8576677],
[9, 9661108, 8338776],
[10, 10181676, 8760074],
[11, 9435376, 8092996],
[12, 9489747, 8122793],
[13, 9556154, 8163689],
[14, 9381839, 8005802],
[15, 9099192, 7758048],
[16, 8890454, 7576040],
[17, 8720216, 7432716],
[18, 8594120, 7328355],
[19, 8416000, 7183082],
[20, 8430209, 7205565],
[21, 8466902, 7251819],
[22, 8894890, 7638348],
[23, 8486376, 7308669],
[24, 8587529, 7420310],
[25, 8796105, 7629613],
[26, 9049822, 7885903],
[27, 9367029, 8203736],
[28, 9588509, 8447239],
[29, 9880743, 8760562],
[30, 10273285, 9171734],
[31, 11010587, 9897533],
[32, 13601860, 12314052],
[33, 13043658, 11883209],
[34, 12594941, 11546787],
[35, 13131786, 12117412],
[36, 12360084, 11473978],
[37, 11386597, 10628424],
[38, 10761644, 10094575],
[39, 10163338, 9571765],
[40, 11422792, 10797854],
[41, 10508636, 9964478],
[42, 10017988, 9526554],
[43, 9619763, 9173632],
[44, 9056756, 8659112],
[45, 8997215, 8626101],
[46, 9652077, 9281127],
[47, 10015409, 9662890],
[48, 11069594, 10715950],
[49, 11768373, 11433423],
[50, 12018464, 11708473],
[51, 12355492, 12091272],
[52, 12906951, 12693324],
[53, 12432644, 12298286],
[54, 12529023, 12460625],
[55, 10718431, 10707166],
[56, 11251041, 11290592],
[57, 11415079, 11504019],
[58, 11196086, 11338591],
[59, 12228142, 12453712],
[60, 9600080, 9836193],
[61, 5711938, 5898205],
[62, 5933189, 6167949],
[63, 5948957, 6221196],
[64, 7167743, 7565716],
[65, 8064981, 8622421],
[66, 7202344, 7810706],
[67, 7411934, 8156809],
[68, 7100337, 7937336],
[69, 6511011, 7403640],
[70, 6628801, 7655587],
[71, 5539974, 6496927],
[72, 5340662, 6361109],
[73, 4486039, 5334561],
[74, 4095771, 4855813],
[75, 3672686, 4282433],
[76, 3284023, 3938476],
[77, 2840609, 3499661],
[78, 2557354, 3174779],
[79, 2259373, 2870194],
[80, 2076623, 2715500],
[81, 1907136, 2559103],
[82, 1682448, 2318997],
[83, 1409855, 2009200],
[84, 1286674, 1875365],
[85, 1103399, 1686589],
[86, 933191, 1521358],
[87, 769638, 1350282],
[88, 626185, 1151337],
[89, 503993, 973886],
[90, 370193, 768844],
[91, 268569, 598536],
[92, 202514, 492130],
[93, 136717, 366776],
[94, 93980, 278374],
[95, 58550, 192884],
[96, 34165, 129966],
[97, 20236, 92475],
[98, 10692, 60687],
[99, 4848, 35695],
[100, 3722, 45558]
];
配置列信息
const columns = [
{
field: '0',
title: 'Age',
width: 'auto'
},
{
field: '1',
title: 'Male (Population)',
width: 'auto',
cellType: 'progressbar',
min: 0,
max: 13601860 + 1000000,
},
{
field: '2',
title: 'Female (Population)',
width: 'auto',
cellType: 'progressbar',
min: 0,
max: 13601860 + 1000000,
},
{
field: '0',
title: 'Age',
width: 'auto',
}
];
0 - 100每一个年龄都对应一条数据,数据格式是二维数组,所以设置column的filed时直接将数组index设置到filed上,第二三列的cellType设置为'progressbar'让其显示为数据条,数据条需要同时配置{min: number, max: number}也就是指明数据范围,max我这里选取了records中的最大值,为了整体上好看让其和边缘有个padding这里加了buffer: 1000000。优化显示效果
defaultRowHeight: 6只有6px,优化左右侧年龄数字显示不全问题,这里开启mergeCell: true,配置会将上下单元格内容一致的进行合并,但是每一行的数据并不相同怎么样,我们通过fieldFormat强制让他们上下相邻五行的内容一样: fieldFormat(args) {
if (args[0] >= 100) {
return 100;
}
return Math.round(args[0] / 5) * 5;
},
fieldFormat(args) {
return '';
}
style: {
barRightToLeft: true
}
{
field: '1',
title: 'Male (Population)',
width: 'auto',
fieldFormat(args) {
return '';
},
cellType: 'progressbar',
min: 0,
max: 13601860 + 1000000,
style: {
barHeight: 5,
barColor: '#4cba72',
barRightToLeft: true
}
},
{
field: '2',
title: 'Female (Population)',
width: 'auto',
cellType: 'progressbar',
fieldFormat(args) {
return '';
},
min: 0,
max: 13601860 + 1000000,
style: {
barColor:'#f66d6c',
barHeight: 5,
}
},
theme: VTable.themes.DEFAULT.extends({
headerStyle: {
color: '#dfeef7',
bgColor: '#038dc8'
},
frameStyle: {
borderColor: '#1d80b0',
borderLineWidth: 2
}
})
图表标题
title: {
text: 'China Population 2023 Pyramid: 1,425,849,286',
padding: 10,
orient: 'top',
textStyle: { fill: '#16cdcd' }
},
VTable中progressbar类型的使用
progressbar 类型,更是为开发者提供了丰富的选项,配合表格的其他能力能使其能够根据具体的需求和设计风格,打造出独具特色的进度条。- min:进度条展示范围的最小数据,默认值为0。
- max:进度条展示范围的最大数据,默认值为100。
- barType:进度条类型,默认值为'default'。可选值包括:
- 'default':普通进度条;
- 'negative':考虑负值的进度条,进度条会以0为分割显示正负两个方向的进度条;
- 'negative_no_axis':与'negative'类似,但无0值坐标轴。
- dependField:如果需要单元格展示的文字和进度条使用的数据字段不同,在
dependField中配置进度条使用的数据字段。
style方面也有很多专属配置项,如barColor、barHeight、barAxisColor、barMarkXXX等,通过这些配置项,我们可以进一步美化进度条的外观。VTable其他单元格类型的介绍
- text:最基本的单元格类型,用于显示文本信息。在表格中,我们可以使用text类型来展示行标签、列标签以及一些辅助说明文字,帮助观众更好地理解数据的含义。
- link:用于显示链接类型的数据。通过设置不同的格式化函数、样式以及点击时的跳转地址、是否检测链接的合法性等,我们可以对链接进行灵活的展示和处理。
- image:允许我们在单元格中插入图片。如果我们的数据与图片相关,如产品图片、地理位置图片等,使用image类型可以直观地展示这些信息,增强表格的视觉效果。
- video:与image类型类似,用于显示视频类型的数据,所有配置项和image一样。
- sparkline:用于显示迷你图类型的数据。通过设置迷你图具体的
sparklineSpec配置项,我们可以展示各种趋势、分布等迷你图表,为数据可视化提供更多可能性。 - chart:用于显示图表类型的数据。在使用该类型之前需要先通过
VTable.chart.register注册一种图表类型,注册之后可以通过chartModule和chartSpec等配置项来展示丰富的图表内容。 - checkbox:复选框类型单元格在许多应用中被广泛使用,包括任务管理、数据筛选、权限设置等。checkbox单元格是否处于选中状态,默认值为 false,支持配置函数,不同单元格配置不同。
- radio: 单选框类型
小结
巧用VTable打造炫酷金字塔图表的更多相关文章
- Android ViewPager 打造炫酷欢迎页
Android ViewPager 打造炫酷欢迎页 ViewPager是Android扩展v4包中的类,这个类可以让用户切换当前的View.对于这个类的应用场景,稍加修改就可以应用到多个环境下.比如: ...
- Android 教你打造炫酷的ViewPagerIndicator 不仅仅是高仿MIUI
1.概述 哈,今天给大家带来一个ViewPagerIndicator的制作,相信大家在做tabIndicator的时候,大多数人都用过 TabPageIndicator,并且很多知名APP都使用过这个 ...
- JParticles 2.0 发布,打造炫酷的粒子特效
JParticles 2.0 发布,打造炫酷的粒子特效.不好意思哈,在这么繁花似锦的世界里,标题不得不取得吸引眼球一点哈,不然...还是不啰嗦了,我们进入正题吧 简单介绍一下 JParticles 2 ...
- Photoshop和WPF双剑配合,打造炫酷个性的进度条控件
现在如果想打造一款专业的App,UI的设计和操作的简便性相当重要.UI设计可以借助Photoshop或者AI等设计工具,之前了解到WPF设计工具Expression Blend可以直接导入PSD文件或 ...
- hexo的next主题个性化教程:打造炫酷网站
看到有些next主题的网站很炫酷,那么是怎么配置的呢?接下来我会讲一讲如何实现一些炫酷的效果 主要有以下32种: 在右上角或者左上角实现fork me on github 添加RSS 添加动态背景 实 ...
- Linux进阶之使用Oh-My-Zsh打造炫酷终端
Oh My Zsh是基于zsh命令行的一个扩展工具集,提供了丰富的扩展功能.除了功能增强之外,还提供非常丰富的主题.使用Oh-My-Zsh打造酷炫Shell终端的步骤(Deepin系统): 原始终端: ...
- GJM :JS + CSS3 打造炫酷3D相册 [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- zabbix结合grafana打造炫酷监控界面
一.grafana介绍 grafana是一个开源的数据展示工具, 是一个开箱即用的可视化工具,具有功能齐全的度量仪表盘和图形编辑器,有灵活丰富的图形化选项,可以混合多种风格,支持多个数据源特点. za ...
- Android 自定义控件玩转字体变色 打造炫酷ViewPager指示器
1.概述 本篇博客的产生呢,是因为,群里的哥们暖暖给我发了个效果图,然后问我该如何实现顶部ViewPager指示器的字体变色,该效果图是这样的: 大概是今天头条的app,神奇的地方就在于,切换View ...
- 2019基于Hexo快速搭建个人博客,打造一个炫酷博客(1)-奥怪的小栈
本文转载于:奥怪的小栈 这篇文章告诉你如何在2019快速上手搭建一个像我一样的博客:基于HEXO+Github搭建.并完成SEO优化,打造一个炫酷博客. 本站基于HEXO+Github搭建.所以你需要 ...
随机推荐
- leetcode 740 删除并获得点数
740 删除并获得点数 题意 给你一个整数数组 nums ,你可以对它进行一些操作. 每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数.之后,你必须删除 所有 等于 n ...
- Ext.Net & ASP.NET
实际上己有很完善的asp.net.控件实现ExtJS的功能,使用开发人员不用过多了解EXtJS即可实现其一样的功能. 使用Asp.net web form /MVC方式均可.可以很快的上手开发,如果用 ...
- php orm的C扩展 ycdatabase
背景:昨天看了ice框架后,感觉运行效率非常高,与其差不多的就是yaf了,然后因为yaf没有orm有点遗憾,不过我就这样去找了找orm,产生了这样的感想 今天又看了一下yaf框架,确实和ice差不多, ...
- Qt5 CMake 使用指南
Qt5 CMake 使用指南 CMAKE_PREFIX_PATH的使用说明 CMAKE_PREFIX_PATH是CMake中一个重要的环境变量,它用于帮助CMake在配置项目时找到各种依赖项的位置.这 ...
- element table 合并同类项并输出后台返回数据
table的样式如下 后台返回的数据格式是按照横着来的,因为表头是经过处理的,而且是作为独立出来的数据返给前端的,所以当我们进行数据填充的时候需要用到后台返回的完整的数据,要想一一对应的话,我们需要进 ...
- nginx之日志
1)耗时问题定位 这几天在优化服务器的响应时间,在根据 nginx 的 accesslog 中 requesttime进行程序优化时,发现有个接口,直接返回数据,平均的requesttime进行程序优 ...
- 2-SQL注入渗透与攻防
1.SQL注入基础 1.1 什么是sql注入 一.SQL注入概述 二.数据库概述 1.关系型数据库 关系型数据库,存储格式可以直观的反映实体间的关系,和常见的表格比较相似 关系型数据库中表与表之间有很 ...
- python语言实现_通过端口转发实现跨网络(多网络之间)通信_science_network
本文使用python语言实现了一个端口转发的程序,该程序可以实现多网络之间的信息通信,当然这里有个前提,那就是多个网络都在一台主机上有可以连通的端口. 之所以有这个编写代码的需求,是因为最近使用的sc ...
- Epicor 10 SaaS云登录
随着云计算的普及,几乎所有的软件都可以云化了,但事实上,并没有.尤其是在管理软件领域起步较早的 ERP 似乎在云化的道路上一直步履蹒跚. 随着公共云的成熟,人们的观念已经改变.云计算和 SaaS 提供 ...
- vue开发一个简单的组件
首先在项目中新建一个js文件 在文件内创建一个对象,对象内创建install方法,将对象用export default暴漏出去 export default{ install(){ console.l ...