本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes

1 简介

  大家好我是费老师,matplotlib作为数据可视化的强力工具,可以帮助我们自由创作各式各样的数据可视化作品,其中matplotlib.pyplot.table模块就专门用于绘制表格,但是由于参数复杂,且默认样式单一简陋,想基于它绘制出美观的表格需要花费不少功夫。

  而我最近发现的一个基于matplotlib的第三方库plottable,用它来生成数据表格图既简单又美观,今天的文章中费老师我就来带大家学习它的常用方法~

2 基于plottable绘制漂亮的表格

  使用pip install plottable完成安装后,我们先从一个简单的例子了解其基础的使用方式:

2.1 从简单例子出发

  plottable的基础使用很简单,在已有数据框的基础上,直接调用plottable中的Table模块即可:

  渲染出的表格图如下:

2.2 plottable的常用方法

  了解到plottable的基础用法后,接下来我们来学习如何添加一些常用参数来对表格进行美化:

2.2.1 控制表格奇数偶数行底色

  通过在Table()中设置参数odd_row_coloreven_row_color,我们可以传入matplotlib中合法的色彩值进行表格奇数偶数行底色的设置:

2.2.2 控制表头单元格与数据单元格样式

  通过Table()中的参数col_label_cell_kwcell_kw,我们可以分别对表头区域单元格、数据区域单元格进行样式设置,接受matplotlib.patches.Rectangle全部可用参数,例如:

2.2.3 调节单元格文字样式

  通过参数textprops我们可以对全部单元格的文字样式进行控制:

2.2.4 配置行分割线

  通过bool型参数col_label_dividerfooter_dividerrow_dividers可以分别设置是否为表头、表格尾部、数据行绘制分割线:

  而通过参数col_label_divider_kwfooter_divider_kwrow_divider_kw则可以分别控制各个部分分割线的样式,支持plt.plot中全部参数:

2.2.5 基于ColDef的列样式细粒度设置

  plottable中最强大的地方在于,其通过配置由plottable.ColDef对象列表构成的column_definitions参数,可细粒度地对每一列进行自由的样式定义,其中每个ColDef()对象通过参数name与列名进行对应,常见的用法有:

  • 分别设置不同字段的宽度比例系数

  以每列的默认宽度为1,可以分别为不同列调整宽度:

  • 分别设置不同字段的文本对齐方式

  每个ColDef对象都可设置textprops参数,基于此可以实现为不同字段定义水平对齐方式:

  • 分别为不同字段设置数值色彩映射

  通过为ColDef设置参数cmaptext_cmap,我们可以分别基于对应列的数值,对其单元格底色或字体颜色进行值映射:

  • 为字段创建分组展示

  通过为若干个ColDef设置相同的group参数,我们可以为具有相同group参数的字段添加分组标识:

  • 为指定字段绘制列边框

  通过为ColDef设置参数border,我们可以决定如何绘制不同字段的列边框:

  除了本文所述的部分功能外,plottable还有很多高级进阶的使用方法,譬如单元格图片渲染、自定义单元格绘制内容等,下面的几个例子就是基于plottable创作的:

https://plottable.readthedocs.io/en/latest/example_notebooks/wwc_example.html

https://plottable.readthedocs.io/en/latest/example_notebooks/bohndesliga_table.html

https://plottable.readthedocs.io/en/latest/example_notebooks/plot_example.html

https://plottable.readthedocs.io/en/latest/example_notebooks/heatmap.html

  更多用法请移步官网https://plottable.readthedocs.io/


  以上就是本文的全部内容,欢迎在评论区与我进行讨论~

最新文章

  1. DDD 领域驱动设计-Value Object(值对象)如何使用 EF 进行正确映射
  2. Telnet
  3. ASP.NET MVC SSO 单点登录设计与实现
  4. 基于双向链表的增删改查和排序(C++实现)
  5. 做mapx、ArcEngine的二次开发出现“没有注册类别 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG)”
  6. Objective-C之用C的字符来处理NSString相关的字符替换和拼接的问题
  7. $q服务的API详解
  8. linux文件描述符--转载
  9. 【C#学习笔记】List容器使用
  10. IOS开发教程之put上传文件的服务器的配置及实例分享-备用
  11. OAuth2.0学习(1-2)OAuth2.0的一个企业级应用场景 - 新浪开放平台微博OAuth2.0认证
  12. TrueType字体的后缀名解释
  13. Abp Area View文件无法调用@L方法
  14. HTML5经典实例——1基础语法和语义
  15. 问题处理:Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)
  16. netty(二) 创建一个netty服务端和客户端
  17. V8 下的垃圾回收机制
  18. 架构师如何借鉴他人经验快速成长? | 2018GIAC上海站日程上线!
  19. node学习笔记4——get数据传递
  20. 第十四章 数字签名算法--RSA

热门文章

  1. springboot整合mybatis步骤以及错误集合
  2. Codeforces Round #812 (Div. 2) D. Tournament Countdown(交互题)
  3. 新建Maui工程运行到IiOS物理设备提示 Could not find any available provisioning profiles for iOS 处理办法
  4. JMX port被占用
  5. 第2-3-4章 上传附件的接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss
  6. Go语言核心36讲31
  7. UED Landing 页 - 定时抓取掘金文章
  8. 【SQL进阶】Day05:窗口函数
  9. 【Java SE进阶】Day09 字节流、字符流、I/O操作、属性集
  10. 【Spark】Day03-Spark SQL:DataFrame、DataSet、sql编程与转换、项目实战(区域热门商品)