本文示例代码已上传至我的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. React 函数组件

    React 函数组件 1.定义方式 React 函数组件是指使用函数方法定义的组件. 定义方式:与函数的定义方式相同,需要将内容 return 出来,需要注意的是最外层只有一个标签或者使用<&g ...

  2. linux系统启动达梦迁移工具失败解决办法

    在达梦数据库服务端的tool目录下执行./dts来启动迁移工具,迁移工具启动前出现报错,以下提供几种遇到问题的解决办法: 1. 报错1: 执行./dts,报错提示: [yyuser@qy-ggyf-z ...

  3. python(27)反射机制

    1. 什么是反射? 它的核心本质其实就是基于字符串的事件驱动,通过字符串的形式去操作对象的属性或者方法 2. 反射的优点 一个概念被提出来,就是要明白它的优点有哪些,这样我们才能知道为什么要使用反射. ...

  4. vulnhub靶场之DRIPPING BLUES: 1

    准备: 攻击机:虚拟机kali.本机win10. 靶机:DRIPPING BLUES: 1,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhu ...

  5. C#使用GDI+同时绘制图像和ROI在picturebox上

    Bitmap bmp; /// <summary> /// 绘制图像 /// </summary> /// <param name="g">Gr ...

  6. labuladong

    由于 labuladong 的算法网站频繁被攻击,且国内访问速度可能比较慢,所以本站同时开放多个镜像站点: https://labuladong.gitee.io/algo/ https://labu ...

  7. 前端学习 Nginx

    前端学习 nginx 本篇主要讲解 nginx 常用命令.基础概念(正向/反向代理.负载均衡.动静分离.高可用).配置文件结构,并通过简单的实验来体验反向代理和负载均衡,最后说一下 nginx 原理. ...

  8. php zip下载附件到压缩包并浏览器下载

    /** * 下载图片并生成压缩包 * @param $arr 资源数组 * @return string */ function downloadZipImg($arr) {if(is_array($ ...

  9. [ERROR] mariadbd: The table 'INNODB_BUFFER_PAGE' is full

    问题描述:将information_schema导出sql文件到新库中恢复,sql中的表都是临时表,存储引擎都是memory,在导入的过程中实际大量会占用临时表. 报错信息:ERROR 1114 (H ...

  10. Spring校验器实例

    @size (min=3, max=20,message="用户名长度只能在3-20之间") @size (min=6, max=20,message="密码长度只能在6 ...