巧用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搭建.所以你需要 ...
随机推荐
- 买了个mini主机当服务器
虽然有苹果的电脑,但是在装一些软件的时候,从想着能不能有一个小型的服务器,免得各种设置什么帮我强各种别的导致Mac出现各种的异常,整体上的话去看了一些小的主机,看过苹果的MV迷你Mac,但是发现是太贵 ...
- 深度解读GaussDB逻辑解码技术原理
本文分享自华为云社区<[GaussTech技术专栏]GaussDB逻辑解码技术原理>,作者:GaussDB 数据库. 1.背景 随着国内各大行业数字化改造步伐的加快,异构数据库数据同步的需 ...
- Centos7系统docker部署Ferry工单系统
1.更新yum源国内阿里1.1备份当前yum仓库配置sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.rep ...
- Webstorm 2024 安装使用 (附加永久激活码、补丁)
下载安装 第二步,安装完成之后,下载补丁 下载地址(里面包含激活码) 完成,之后输入激活码 免责声明:本文中的资源均来自互联网,仅供个人学习和交流使用,严禁用于商业行为,下载后请在24小时内从电脑中彻 ...
- BasicDataSourceFactory类简介
BasicDataSourceFactory实现了javax.naming.spi.ObjectFactory接口. 因此,先从ObjectFactory学习. 一.ObjectFactory接 ...
- php xattr操作文件扩展属性后续
由于之前看了xattr的写入效率,这里简单的实现一下生产者消费者模型的高速写入. 生产者(让他创建40万条数据) <?php // 生产者 不断的生产大量数据 但是总会有停止的时候(本业务功能结 ...
- MySQL原理简介—8.MySQL并发事务处理
大纲 1.简单总结增删改SQL语句的实现原理 2.多个事务同时执行的场景遇到的问题 3.多个事务并发更新或查询时可能出现的问题 4.SQL标准中对事务的4个隔离级别 5.MySQL是如何支持4种事务隔 ...
- Solr学习总结-Facet
返回查询集合中指定field的统计情况,例如找到city一样的文档数目: 加入文档 <add> <doc> <field name="id">1 ...
- 啃啃老菜:Spring IOC核心源码学习(一)
啃啃老菜:Spring IOC核心源码学习(一) 本文主要以spring ioc容器基本代码骨架为切入点,理解ioc容器的基本代码组件结构,各代码组件细节剖析将放在后面的学习文章里. 关于IOC容器 ...
- golang之go-spew
github: https://github.com/davecgh/go-spew 我们在使用Golang(Go语言)开发的过程中,会通过经常通过调试的方式查找问题的原因,解决问题,尤其是当遇到一个 ...