【matplotlib】可视化解决方案——如何向图表中添加数据表

文章介绍了matplotlib库在数据可视化中的表格功能,包括使用Table类和pyplot.table()方法创建和管理表格。Table类用于构建表格,Cell类作为表格的单元格,具有文本和矩形属性。pyplot.table()提供了快速创建表格的接口,允许自定义单元格内容、颜色、排版等。示例代码展示了一个创建表格并与图表结合的实践过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

虽然 matplotlib 主要用途是绘图,但是他还是可以在绘图时帮助我们做一些其他事务,比如在图表旁边放置一个整齐的数据表格。我们必须明白为数据绘制可视化图形主主要是是为了解释那些不能理解的数据。将一些来自数据整体集合的总结性或者突出强调的值放在图表旁边可以更好的帮助我们理解数据,例如平均销售额等。

在 matplotlib 中有一个专门的模块 matplotlib.table 用于管理和表格相关事情,在 matplotlib.table 文件有 Cell、Table 两个类以及包装方法 table(),Table 类是一个由单元格组成的表格,(0, 0)位于表格的左上角。在实际使用中都是调用 pyplot.talbe() API 快速创建 Table 实例,这个方法的底层调用链是 pyplot.table() -> table.table() 方法。Table 类的解析如下:

class Table(Artist):
	# ax:指定绘制表格Axes对象;
	# loc:指定表格相当于Axes对象的位置。
	# bbox:指定表格的边界,可以是Bbox对象或者[xmin, ymin, width, height]
	def __init__(self, ax, loc=None, bbox=None, **kwargs):
		...
		# 同上
		self._axes = ax  
		# 同上
		self._loc = loc  
		# 同上
		self._bbox = bbox
		# 存储每个位置的Cell对象,(M, N) = Cell()
		self._cells = {}
		...

	def add_cell(self, row, col, *args, **kwargs):
		xy = (0, 0)  
		# 创建Cell对象
		cell = CustomCell(xy, visible_edges=self.edges, *args, **kwargs)  
		# 添加Cell对象到字典中
		self[row, col] = cell  
		return cell
	

Cell 类负责表格中每一个单元格的创建,继承自 Rectangle 类,本质上是带有文本的矩形。它的源码解析如下:

class Cell(Rectangle):
	# xy:指定单元格左下角的位置
	# width:指定单元格宽度
	# height:指定单元格高度
	# edgecolor:指定单元格边框颜色
	# facecolor:指定单元格颜色
	# fill:指定是否填充单元格
	# text:指定单元格文本
	# loc:指定单元格内部文本排版
	# fontproperties:指定单元格文本属性
	# visible_edges:指定单元格边框的渲染形式
	def __init__(self, xy, width, height,  
             edgecolor='k', facecolor='w',  
             fill=True,  
             text='',  
             loc=None,  
             fontproperties=None  
             ):

接下来介绍一下 matplotlib 的快速创建方法 pyploy.table(),他的分析如下:

# cellText:指定放入单元格的字符串
# cellColours:指定每个单元格的背景颜色
# cellLoc:指定单元格文本排版
# colWidths:指定列宽
# rowLabels:指定标题行文本
# rowColours:指定标题行颜色
# rowLoc:指定标题行排版
# cowLabels:指定标题列文本
# cowColours:指定标题列颜色
# cowLoc:指定标题列排版
# loc:指定表格相当于Axes对象的位置。
# bbox:指定表格的边界,可以是Bbox对象或者[xmin, ymin, width, height]
def table(  
        cellText=None, cellColours=None, cellLoc='right',  
        colWidths=None, rowLabels=None, rowColours=None,  
        rowLoc='left', colLabels=None, colColours=None,  
        colLoc='center', loc='bottom', bbox=None, edges='closed',  
        **kwargs):
        ...

示例

最后我们以一个示例来进行综合演示,

import matplotlib.pyplot as plt  
import numpy as np  
  
plt.figure()  
ax = plt.gca()  
y = np.random.randn(9)  
  
col_labels = ['col1', 'col2', 'col3']  
row_labels = ['row1', 'row2', 'row3']  
table_vals = [[1, 12, 13],  
              [22, 21, 23],  
              [28, 29, 30]]  
  
  
row_colors = ['red', 'green', 'gold']  
  
my_table = plt.table(cellText=table_vals,  
                     cellLoc='center',  
                     colWidths=[0.1] * 3,  
                     rowLabels=row_labels,  
                     colLabels=col_labels,  
                     rowColours=row_colors,  
                     loc='upper right')  
  
plt.plot(y)  
plt.show()

画图结果如下:

在这里插入图片描述

往期回顾

  1. 【matplotlib】可视化解决方案——如何更改绘图区域背景颜色
  2. 【matplotlib】可视化解决方案——如何使用数学公式
  3. 【matplotlib】可视化解决方案——绘图刻度设置
  4. 【matplotlib】可视化解决方案——共享绘图区域问题
  5. 【matplotlib】可视化解决方案——子图设置大标题问题解决方案
  6. 【matplotlib】可视化解决方案——子图间距问题解决方案
  7. 【matplotlib】可视化解决方案——capstyle参数详解
  8. 【matplotlib】可视化解决方案——joinstyle参数详解
  9. 【matplotlib】可视化解决方案——linestyle参数详解
  10. 【matplotlib】可视化解决方案——柱状图标注问题

在这里插入图片描述

文中难免会出现一些描述不当之处(尽管我已反复检查多次),欢迎在留言区指正,相关的知识点也可进行分享,希望大家都能有所收获!!如果觉得我的文章写得还行,不妨支持一下。你的每一个转发、关注、点赞、评论都是对我最大的支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猪猪家的大猪猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值