(数据科学学习手札149)用matplotlib轻松绘制漂亮的表格
本文示例代码已上传至我的
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_color和even_row_color,我们可以传入matplotlib中合法的色彩值进行表格奇数偶数行底色的设置:

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

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

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

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

2.2.5 基于ColDef的列样式细粒度设置
plottable中最强大的地方在于,其通过配置由plottable.ColDef对象列表构成的column_definitions参数,可细粒度地对每一列进行自由的样式定义,其中每个ColDef()对象通过参数name与列名进行对应,常见的用法有:
- 分别设置不同字段的宽度比例系数
以每列的默认宽度为1,可以分别为不同列调整宽度:

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

- 分别为不同字段设置数值色彩映射
通过为ColDef设置参数cmap、text_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/。
以上就是本文的全部内容,欢迎在评论区与我进行讨论~
(数据科学学习手札149)用matplotlib轻松绘制漂亮的表格的更多相关文章
- (数据科学学习手札98)纯Python绘制满满艺术感的山脊地图
本文示例代码及附件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 下面的这幅图可能很多读者朋友们都看到过,这 ...
- (数据科学学习手札133)利用geopandas绘制拓扑着色地图
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 我们在绘制某些地图时,为了凸显出每个独立的 ...
- (数据科学学习手札90)Python+Kepler.gl轻松制作时间轮播图
本文示例代码及数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 Kepler.gl作为一款强大的开源地理信 ...
- (数据科学学习手札55)利用ggthemr来美化ggplot2图像
一.简介 R中的ggplot2是一个非常强大灵活的数据可视化包,熟悉其绘图规则后便可以自由地生成各种可视化图像,但其默认的色彩和样式在很多时候难免有些过于朴素,本文将要介绍的ggthemr包专门针对原 ...
- (数据科学学习手札40)tensorflow实现LSTM时间序列预测
一.简介 上一篇中我们较为详细地铺垫了关于RNN及其变种LSTM的一些基本知识,也提到了LSTM在时间序列预测上优越的性能,本篇就将对如何利用tensorflow,在实际时间序列预测任务中搭建模型来完 ...
- (数据科学学习手札72)用pdpipe搭建pandas数据分析流水线
1 简介 在数据分析任务中,从原始数据读入,到最后分析结果出炉,中间绝大部分时间都是在对数据进行一步又一步的加工规整,以流水线(pipeline)的方式完成此过程更有利于梳理分析脉络,也更有利于查错改 ...
- (数据科学学习手札75)基于geopandas的空间数据分析——坐标参考系篇
本文对应代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在上一篇文章中我们对geopandas中的数据结 ...
- (数据科学学习手札50)基于Python的网络数据采集-selenium篇(上)
一.简介 接着几个月之前的(数据科学学习手札31)基于Python的网络数据采集(初级篇),在那篇文章中,我们介绍了关于网络爬虫的基础知识(基本的请求库,基本的解析库,CSS,正则表达式等),在那篇文 ...
- (数据科学学习手札49)Scala中的模式匹配
一.简介 Scala中的模式匹配类似Java中的switch语句,且更加稳健,本文就将针对Scala中模式匹配的一些基本实例进行介绍: 二.Scala中的模式匹配 2.1 基本格式 Scala中模式匹 ...
- (数据科学学习手札47)基于Python的网络数据采集实战(2)
一.简介 马上大四了,最近在暑期实习,在数据挖掘的主业之外,也帮助同事做了很多网络数据采集的内容,接下来的数篇文章就将一一罗列出来,来续写几个月前开的这个网络数据采集实战的坑. 二.马蜂窝评论数据采集 ...
随机推荐
- Dropout原理分析
工作流程 dropout用于解决过拟合,通过在每个batch中删除某些节点(cell)进行训练,从而提高模型训练的效果. 通过随机化一个伯努利分布,然后于输入y进行乘法,将对应位置的cell置零.然后 ...
- JS 可编辑表格的实现(进阶)
1.前言 在普通的可编辑表格的基础上,改进可编辑表格.数据来自外部的json(模拟服务端),通过json数据生成可编辑表格.根据实际情况,表格没有新增数据功能.表格的可编辑列,计算的列,每列的数据大小 ...
- 云原生之旅 - 9)云原生时代网关的后起之秀Envoy Proxy 和基于Envoy 的 Emissary Ingress
前言 前一篇文章讲述了基于Nginx代理的Kuberenetes Ingress Nginx[云原生时代的网关 Ingress Nginx]这次给大家介绍下基于Envoy的 Emissary Ingr ...
- 从 WinDbg 角度理解 .NET7 的AOT玩法
一:背景 1.讲故事 前几天 B 站上有位朋友让我从高级调试的角度来解读下 .NET7 新出来的 AOT,毕竟这东西是新的,所以这一篇我就简单摸索一下. 二:AOT 的几个问题 1. 如何在 .NET ...
- 网络编程:多进程实现TCP服务端并发、互斥锁代码实操、线程理论、创建线程的两种方式、线程的诸多特性、GIL全局解释器锁、验证GIL的存在
目录 多进程实现TCP服务端并发 互斥锁代码实操 线程理论 创建线程的两种方式 线程的诸多特性 GIL全局解释器锁 验证GIL的存在 GIL与普通互斥锁 python多线程是否有用 死锁现象 多进程实 ...
- ArcEngine 序列化AO对象
ArcEngine中只要是继承了IPersistStream接口的对象均可调用ArcEngine中的类库进行序列化和反序列化.一般我们会序列化成xml格式,作为字符串存储,需要的时候,反序列化为对象. ...
- Visual Studio高版本 ArcObject for .Net 低版本
在基于ArcGIS的开发中,经常会存在Visual Studio版本高,ArcObject for .Net 版本低的问题.例如Visual Studio 2015的环境下,安装ArcObject f ...
- services资源+pod详解
services资源+pod详解 一.Service 虽然每个Pod都会分配一个单独的Pod IP,然而却存在如下两问题: Pod IP 会随着Pod的重建产生变化 Pod IP 仅仅是集群内可见的虚 ...
- day27 CSS浮动、溢出 & js基本语法 & DOM文档流操作
接day26CSS=>CSS定位 overflow属性 值 描述 示例 visible 默认值,内容不会被修剪,会呈现在元素框之外 hidden 内容会被修剪,并且其余内容是不可见的 overf ...
- 【Zookeeper】结构、应用、安装部署与参数、客户端命令行操作、API应用、内部原理(选举机制、写数据、监听器)
一.Zookeeper入门 1.概述 分布式服务管理框架(存储和管理数据) Zookeeper=文件系统+通知机制 2.特点 主从集群 半数以上,正常工作 请求顺序执行 数据更新具有原子性 3.数据结 ...