【matplotlib】可视化之路——Cell类详解

概述

以下是 maplotlib 库中的继承图:

在这里插入图片描述

Cell 类继承自 Rectangle 类,其实一个 Cell 类就是一个 Rectangle 类加上特定的文本。一般情况下不会从 Cell 类创建实例,而是作为 plt.table() 创建的 Table 对象的单元格存在。

Cell 类的定义如下:

class Cell(Rectangle):
	def __init__(self, xy, width, height,  
	             edgecolor='k', facecolor='w',  
	             fill=True,  
	             text='',  
	             loc=None,  
	             fontproperties=None,  
	             *,  
	             visible_edges='closed',  
	             ):
	    super().__init__(xy, width=width, height=height, fill=fill,  
                 edgecolor=edgecolor, facecolor=facecolor)

参数说明:

  • Xy:指定 Cell 对象左下角的位置;
  • Width:指定单元格宽度;
  • Height:指定单元格高度;
  • Edgecolor:指定单元格边缘颜色,默认黑色;
  • Facecolor:指定单元格背景颜色,默认白色;
  • Fill:指定是否使用背景颜色进行填充,默认是 True;
  • Text:指定单元格文本, 默认空字符串;
  • Loc:指定单元格文本对齐方式,默认右对齐;
  • fontproperties:指定字体字典;
  • visible_edges:指定单元格边缘线的绘制模式,默认 closed 绘制所有的边缘;

从 Cell 类的初始化可以看出除了文本之外都会将参数委托给父类 Rectangle 进行初始化,印证了 Cell 类就是一个 Rectangle 类加上特定的文本这句话,还有这里构建 Cell 实例的时候无法传递 Patch 类的相关参数。

示例

一般情况下我们都是通过 plt.table() 创建 【Table】 对象并将它添加到画布中的,我们先以一个简单的示例来演示一下 Cell 对象应用,完整代码如下:

import numpy as np  
  
import matplotlib.pyplot as plt  
  
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()

画图效果如下:

在这里插入图片描述

上面图中的表格可以看做是多个 Cell 对象的组合,cellText 参数制定了数据单元格的 text 属性;cellText 指定了行标签的 text 属性; colLabels 参数指定了列标签的 text 属性;colWidths=[0.1] * 3 指定了每一列单元格的 width 属性;cellLoc 参数则指定了 Cell 对象文本的对齐方式。经过上面的分析可以看出 plt.table() 就是一种快速创建多个二维 Cell 对象的方法,这也是我们最常用的一种方式。

现在我们更改一下 cellLoc='left' 参数,看看会发生什么?可以看到数据表格已经变成左对齐了。

在这里插入图片描述

最后我们再来看一个示例,Patch 类中有一个属性 hatch,它可以指定块内部填充样式,如果我们创建 Cell 对象的时候传递该属性会发生什么呢?

cell = Cell((30, 30), 30, 30, hatch='*')
TypeError: __init__() got an unexpected keyword argument 'hatch'

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小猪猪家的大猪猪

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

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

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

打赏作者

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

抵扣说明:

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

余额充值