本文示例代码已上传至我的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/


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

(数据科学学习手札149)用matplotlib轻松绘制漂亮的表格的更多相关文章

  1. (数据科学学习手札98)纯Python绘制满满艺术感的山脊地图

    本文示例代码及附件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 下面的这幅图可能很多读者朋友们都看到过,这 ...

  2. (数据科学学习手札133)利用geopandas绘制拓扑着色地图

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 我们在绘制某些地图时,为了凸显出每个独立的 ...

  3. (数据科学学习手札90)Python+Kepler.gl轻松制作时间轮播图

    本文示例代码及数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 Kepler.gl作为一款强大的开源地理信 ...

  4. (数据科学学习手札55)利用ggthemr来美化ggplot2图像

    一.简介 R中的ggplot2是一个非常强大灵活的数据可视化包,熟悉其绘图规则后便可以自由地生成各种可视化图像,但其默认的色彩和样式在很多时候难免有些过于朴素,本文将要介绍的ggthemr包专门针对原 ...

  5. (数据科学学习手札40)tensorflow实现LSTM时间序列预测

    一.简介 上一篇中我们较为详细地铺垫了关于RNN及其变种LSTM的一些基本知识,也提到了LSTM在时间序列预测上优越的性能,本篇就将对如何利用tensorflow,在实际时间序列预测任务中搭建模型来完 ...

  6. (数据科学学习手札72)用pdpipe搭建pandas数据分析流水线

    1 简介 在数据分析任务中,从原始数据读入,到最后分析结果出炉,中间绝大部分时间都是在对数据进行一步又一步的加工规整,以流水线(pipeline)的方式完成此过程更有利于梳理分析脉络,也更有利于查错改 ...

  7. (数据科学学习手札75)基于geopandas的空间数据分析——坐标参考系篇

    本文对应代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在上一篇文章中我们对geopandas中的数据结 ...

  8. (数据科学学习手札50)基于Python的网络数据采集-selenium篇(上)

    一.简介 接着几个月之前的(数据科学学习手札31)基于Python的网络数据采集(初级篇),在那篇文章中,我们介绍了关于网络爬虫的基础知识(基本的请求库,基本的解析库,CSS,正则表达式等),在那篇文 ...

  9. (数据科学学习手札49)Scala中的模式匹配

    一.简介 Scala中的模式匹配类似Java中的switch语句,且更加稳健,本文就将针对Scala中模式匹配的一些基本实例进行介绍: 二.Scala中的模式匹配 2.1 基本格式 Scala中模式匹 ...

  10. (数据科学学习手札47)基于Python的网络数据采集实战(2)

    一.简介 马上大四了,最近在暑期实习,在数据挖掘的主业之外,也帮助同事做了很多网络数据采集的内容,接下来的数篇文章就将一一罗列出来,来续写几个月前开的这个网络数据采集实战的坑. 二.马蜂窝评论数据采集 ...

随机推荐

  1. Java 动态代理原理图解 (附:2种实现方式详细对比)

    ​ 动态代理在 Java 中有着广泛的应用,例如:Spring AOP 面向切面编程,Hibernate 数据查询.以及 RPC Dubbo 远程调用等,都有非常多的实际应用@mikechen 目录 ...

  2. C#中winform DataGridView常用修改点

    1.修改列名 一般情况下,从数据库里面读取的列名是英文或者拼音,但是,有时候显示需要中文,这样就需要修改列名了. dgv.Columns[0].HeaderCell.Value="编号&qu ...

  3. 执行xxx.sh脚本的两种方式

    因公司测试环境的登录模式有2种,大佬们直接写了个脚本完成一键切换,看了其中的脚本文件,其中出现了send "sh out.sh\r":一直疑惑这里的sh out.sh的意思...查 ...

  4. Node.js的学习(一)node.js 的介绍

    一.简介 1.1.什么是 node.js ? node.js  一种 JavaScript 的运行环境,能够使得javascript能够脱离浏览器运行.以前 js 只能在浏览器基础上运行,能够操作的也 ...

  5. (一)Spring Boot集成MyBatis快速入门

    一.在IDEA中创建Spring Boot项目 二.添加依赖(把以下三个依赖都勾上) 三.Maven POM (把上面的依赖选中后,创建项目,打开pom.xml文件就可以看到以下代码,即添加成功) & ...

  6. 27、求解n阶多项式的值,多项式公式如下

    /* 求解n阶多项式的值,多项式公式如下: Pn(x) = 1 n=0; = x n = 1; = (2n - 1)xPn-1(x) - (n - 1)Pn-2(x) n>=2 */ #incl ...

  7. Datawhale组队学习_Task04:详读西瓜书+南瓜书第5章

    第5章 神经网络 5.1 神经元模型 基本定义:神经网络是由具有适应性的简单单元组成的广泛并行互联的网络,它的组织能够模拟生物神经系统对真实世界物体所做出的交互反应. M-P神经元模型:   在此模型 ...

  8. 【Java SE】Day09 继承、super、this、抽象类

    一.继承 1.概述 多个类具有相同属性和行为,共性抽取到一个类中(父类) 父类更通用,子类更具体 2.继承后的成员变量 本类:this.成员变量名 父类:super.成员变量名 3.继承后的成员方法 ...

  9. 一篇文章教你实战Docker容器数据卷

    在上一篇中,咱们对Docker中的容器数据卷做了介绍.已经知道了容器数据卷是什么?能干什么用.那么本篇咱们就来实战容器数据卷,Docker容器数据卷案例主要做以下三个案例 1:宿主机(也就是Docke ...

  10. 使用 BenchmarkDotNet 比较指定容量的 List 的性能

    我们之前提到 List 是 .NET 中常用的数据结构,其在存储大量数据时,如果能够指定它的初始化容量,就会有性能提升.这个优化的方法并不是很明显,因此本文将使用 BenchmarkDotNet 库, ...