欢迎光临散文网 会员登陆 & 注册

基于matplotlib和plottable库绘制精美表格

2023-07-10 20:54 作者:吴小敏63  | 我要投稿

plottable是一个Python库,用于在matplotlib中绘制精美定制的图形表格。plottable的官方仓库地址为:plottable。本文主要参考其官方文档,plottable的官方文档地址为:plottable-doc。plottable安装命令如下:

pip install plottable

本文所有代码见:Python-Study-Notes

# jupyter notebook环境去除warningimport warningswarnings.filterwarnings("ignore")import plottable# 打印plottable版本print('plottable version:', plottable.__version__)# 打印matplotlib版本import matplotlib as pltprint('matplotlib version:', plt.__version__)plottable version: 0.1.5matplotlib version: 3.5.3


目录

  • 1 使用说明

    • 1.1 基础使用

    • 1.2 列的样式自定义

    • 1.3 行列自定义

  • 2 绘图实例

    • 2.1 多行样式设置

    • 2.2 自定义单元格效果

    • 2.3 热图

    • 2.4 女子世界杯预测数据展示

    • 2.5 德甲积分排名榜展示

  • 3 参考


1 使用说明

1.1 基础使用

下面的代码展示了一个简单的图形表格绘制示例,plottable提供了Table类以创建和展示图形表格。

import matplotlib.pyplot as pltimport numpy as npimport pandas as pdfrom plottable import Table# 生成一个包含随机数据的表格d = pd.DataFrame(np.random.random((5, 5)), columns=["A", "B", "C", "D", "E"]).round(2)fig, ax = plt.subplots(figsize=(6, 5))# 基于pandas表格数据创建和展示图形表格tab = Table(d)# 保存图片plt.savefig("table.jpg", dpi=300,bbox_inches='tight')plt.show()

对于plottable的Table类,其构造参数介绍如下:

  • df: pd.DataFrame, 要显示为表格的DataFrame对象

  • ax: mpl.axes.Axes, 绘制表格的坐标轴对象,默认为None

  • index_col: str, DataFrame中的索引列名。默认为None

  • columns: List[str], 哪些列用于绘图。为None表示使用所有列

  • column_definitions: List[ColumnDefinition], 需要设置样式列的style定义类,默认为None

  • textprops: Dict[str, Any], 文本属性的字典,默认为空字典

  • cell_kw: Dict[str, Any], 单元格属性的字典,默认为空字典

  • col_label_cell_kw: Dict[str, Any], 列标签单元格属性的字典,默认为空字典

  • col_label_divider: bool, 是否在列标签下方绘制分隔线,默认为True。

  • footer_divider: bool, 是否在表格下方绘制分隔线,默认为False。

  • row_dividers: bool, 是否显示行分隔线,默认为True

  • row_divider_kw: Dict[str, Any], 行分隔线属性的字典,默认为空字典

  • col_label_divider_kw: Dict[str, Any], 列标签分隔线属性的字典,默认为空字典

  • footer_divider_kw: Dict[str, Any], 页脚分隔线属性的字典,默认为空字典

  • column_border_kw: Dict[str, Any], 列边框属性的字典,默认为空字典

  • even_row_color: str | Tuple, 偶数行单元格的填充颜色,默认为None

  • odd_row_color: str | Tuple, 奇数行单元格的填充颜色,默认为None

在这些参数之中,控制表格绘图效果的参数有以下几类:

  • column_definitions:列的样式自定义

  • textprops:文本的样样式自定义

  • cell_kw:表格单元格的样式自定义

  • 其他设置参数的样式

在这些参数中,最重要的参数是column_definitions,因为column_definitions可以控制几乎所有的绘图效果。接下来本文主要对column_definitions的使用进行具体介绍。

1.2 列的样式自定义

plottable提供了ColumnDefinition类(别名ColDef)来自定义图形表格的单个列的样式。ColumnDefinition类的构造参数如下:

  • name: str,要设置绘图效果的列名

  • title: str = None,用于覆盖列名的绘图标题

  • width: float = 1,列的宽度,默认情况下各列的宽度为轴的宽度/列的总数

  • textprops: Dict[str, Any] = field(default_factory=dict),提供给每个文本单元格的文本属性

  • formatter: Callable = None,用于格式化文本外观的可调用函数

  • cmap: Callable = None,根据单元格的值返回颜色的可调用函数

  • text_cmap: Callable = None,根据单元格的值返回颜色的可调用函数

  • group: str = None,设置每个组都会在列标签上方显示的分组列标签

  • plot_fn: Callable = None,一个可调用函数,将单元格的值作为输入,并在每个单元格上创建一个子图并绘制在其上
    要向其传递其他参数

  • plot_kw: Dict[str, Any] = field(default_factory=dict),提供给plot_fn的附加关键字参数

  • border: str | List = None,绘制垂直边界线,可以是"left" / "l"、"right" / "r"或"both"

通过ColumnDefinition类来设置Table类的column_definitions参数,可以实现不同表格列样式的效果。如果是同时多个列的绘图效果,则需要使用[ColumnDefinition,ColumnDefinition]列表的形式。一些使用示例如下

设置列标题和列宽

import matplotlib.pyplot as pltimport numpy as npimport pandas as pdfrom plottable import ColumnDefinition, ColDef, Tabled = pd.DataFrame(np.random.random((5, 5)), columns=["A", "B", "C", "D", "E"]).round(2)fig, ax = plt.subplots(figsize=(6, 5))# name表示设置哪个列的样式tab = Table(d, column_definitions=[ColumnDefinition(name="A", title="Title A"),ColumnDefinition(name="D", width=2)])plt.show()


基于matplotlib和plottable库绘制精美表格的评论 (共 条)

分享到微博请遵守国家法律