巧用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搭建.所以你需要 ...
随机推荐
- 在使用asm包进行动态类加载的时候的打包问题
如图所示,开发时使用的jdk包下面的asm包,在进行打包时提示asm包不存在,打包方式使用如下: 目前提供两种解决方案: 1:修改打包方式,将jdk的包也打进去: <plugin> < ...
- Windows系统DOS命令详解
一. DOS 的历史 DOS(Disk Operating System),磁盘操作系统 1980 年,西雅图程序员蒂姆-帕特森,86-DOS 1981 年由微软公司购买并改进,更名为 MS-DOS ...
- NOIP2023模拟2联测23 T2 害怕
NOIP2023模拟2联测23 T2 害怕 好像写了一种出题人意料之外的算法. 思路 在生成树上加入白边,白边和若干条蓝色边形成环,环上的蓝色边必须要分配比该白色边更小的边权(最小生成树). 给每一条 ...
- Ubuntu apt-cache命令查找可用软件包
本文GoFace给大家讲解下在Ubuntu及相同包管理的linux系统下如何查找可用软件包.在Ubuntu上大家一般使用apt-get安装软件,如果想查找某一包软件仓库中是否有,并不是使用apt-ge ...
- An Entry Example of Log4j
The log4j can be configured both programmatically and externally using special configuration files. ...
- TreeMap源码分析——深入分析(基于JDK1.6)
TreeMap有Values.EntrySet.KeySet.PrivateEntryIterator.EntryIterator.ValueIterator.KeyIterator.Descendi ...
- 接口文档解决方案之Torna
◆一.开源项目简介 接口文档解决方案,目标是让接口文档管理变得更加方便.快捷.Torna采用团队协作的方式管理和维护接口文档,将不同形式的文档纳入进来统一维护. Torna弥补了传统文档生成工具(如s ...
- gitlab之配置文件.gitlab-ci.yml
自动化部署給我们带来的好处 自动化部署的好处体现在几个方面 1.提高前端的开发效率和开发测试之间的协调效率 Before 如果按照传统的流程,在项目上线前的测试阶段,前端同学修复bug之后,要手动把代 ...
- 元数建模工具之chiner
chiner,发音:[kaɪˈnər],使用React+Electron+Java技术体系构建的一款元数建模平台. 下载地址:https://gitee.com/robergroup/chiner/r ...
- [ARC107D] Number of Multisets题解
很显然的动态规划. 令 $f_{i,j}$ 为 $n=i$,$k=j$ 时满足题意的集合数. 依题意可得:一个集合可以只由另一个集合添加元素或将所有元素除二得到. 初始:$f_{0,0}=1$. 目标 ...