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

2023-11-13

概述

虽然 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】可视化解决方案——柱状图标注问题

在这里插入图片描述

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • python:查找围绕某个 GPS 位置的圆的 GPS 坐标的优雅方法

    我有一组以十进制表示的 GPS 坐标 并且我正在寻找一种方法来查找每个位置周围半径可变的圆中的坐标 这是一个例子 http green and energy com downloads test circle html我需要什么 这是一个圆
  • 保存为 HDF5 的图像未着色

    我目前正在开发一个将文本文件和 jpg 图像转换为 HDF5 格式的程序 用HDFView 3 0打开 似乎图像仅以灰度保存 hdf h5py File Sample h5 img Image open Image jpg data np
  • 中断 Select 以添加另一个要在 Python 中监视的套接字

    我正在 Windows XP 应用程序中使用 TCP 实现点对点 IPC 我正在使用select and socketPython 2 6 6 中的模块 我有三个 TCP 线程 一个读取线程通常会阻塞select 一个通常等待事件的写入线程
  • 为什么从 Pandas 1.0 中删除了日期时间?

    我在 pandas 中处理大量数据分析并每天使用 pandas datetime 最近我收到警告 FutureWarning pandas datetime 类已弃用 并将在未来版本中从 pandas 中删除 改为从 datetime 模块
  • 如何用python脚本控制TP LINK路由器

    我想知道是否有一个工具可以让我连接到路由器并关闭它 然后从 python 脚本重新启动它 我知道如果我写 import os os system ssh l root 192 168 2 1 我可以通过 python 连接到我的路由器 但是
  • 使用 Python 从文本中删除非英语单词

    我正在 python 上进行数据清理练习 我正在清理的文本包含我想删除的意大利语单词 我一直在网上搜索是否可以使用像 nltk 这样的工具包在 Python 上执行此操作 例如给出一些文本 Io andiamo to the beach w
  • 跟踪 pypi 依赖项 - 谁在使用我的包

    无论如何 是否可以通过 pip 或 PyPi 来识别哪些项目 在 Pypi 上发布 可能正在使用我的包 也在 PyPi 上发布 我想确定每个包的用户群以及可能尝试积极与他们互动 预先感谢您的任何答案 即使我想做的事情是不可能的 这实际上是不
  • Pandas 日期时间格式

    是否可以用零后缀表示 pd to datetime 似乎零被删除了 print pd to datetime 2000 07 26 14 21 00 00000 format Y m d H M S f 结果是 2000 07 26 14
  • 使用Python请求登录Google帐户

    在多个登录页面上 需要谷歌登录才能继续 我想用requestspython 中的库以便让我自己登录 通常这很容易使用requests库 但是我无法让它工作 我不确定这是否是由于 Google 做出的一些限制 也许我需要使用他们的 API 或
  • 立体太阳图 matplotlib 极坐标图 python

    我正在尝试创建一个与以下类似的简单的立体太阳路径图 http wiki naturalfrequent com wiki Sun Path Diagram http wiki naturalfrequency com wiki Sun Pa
  • 如何使用 Pandas、Numpy 加速 Python 中的嵌套 for 循环逻辑?

    我想检查一下表的字段是否TestProject包含了Client端传入的参数 嵌套for循环很丑陋 有什么高效简单的方法来实现吗 非常感谢您的任何建议 def test parameter a list parameter b list g
  • 如何在 Python 中解析和比较 ISO 8601 持续时间? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 Python v2 库 它允许我解析和比较 ISO 8601 持续时间may处于不同单
  • Python 2:SMTPServerDisconnected:连接意外关闭

    我在用 Python 发送电子邮件时遇到一个小问题 me my email address you recipient s email address me email protected cdn cgi l email protectio
  • 从Python中的字典列表中查找特定值

    我的字典列表中有以下数据 data I versicolor 0 Sepal Length 7 9 I setosa 0 I virginica 1 I versicolor 0 I setosa 1 I virginica 0 Sepal
  • 在 Sphinx 文档中*仅*显示文档字符串?

    Sphinx有一个功能叫做automethod从方法的文档字符串中提取文档并将其嵌入到文档中 但它不仅嵌入了文档字符串 还嵌入了方法签名 名称 参数 我如何嵌入only文档字符串 不包括方法签名 ref http www sphinx do
  • 如何通过索引列表从 dask 数据框中选择数据?

    我想根据索引列表从 dask 数据框中选择行 我怎样才能做到这一点 Example 假设我有以下 dask 数据框 dict A 1 2 3 4 5 6 7 B 2 3 4 5 6 7 8 index x1 a2 x3 c4 x5 y6 x
  • pyspark 将 twitter json 流式传输到 DF

    我正在从事集成工作spark streaming with twitter using pythonAPI 我看到的大多数示例或代码片段和博客是他们从Twitter JSON文件进行最终处理 但根据我的用例 我需要所有字段twitter J
  • 根据列 value_counts 过滤数据框(pandas)

    我是第一次尝试熊猫 我有一个包含两列的数据框 user id and string 每个 user id 可能有多个字符串 因此会多次出现在数据帧中 我想从中导出另一个数据框 一个只有那些user ids列出至少有 2 个或更多string
  • 在本地网络上运行 Bokeh 服务器

    我有一个简单的 Bokeh 应用程序 名为app py如下 contents of app py from bokeh client import push session from bokeh embed import server do
  • python import inside函数隐藏现有变量

    我在我正在处理的多子模块项目中遇到了一个奇怪的 UnboundLocalError 分配之前引用的局部变量 问题 并将其精简为这个片段 使用标准库中的日志记录模块 import logging def foo logging info fo

随机推荐

  • VM 中ubuntu下----Eclipse ctrl+s 显示update conflict的问题

    VM 中ubuntu下 Eclipse ctrl s 显示update conflict的问题 VMworkstation中使用共享主机的方式 在eclipse下编辑windows下的文件 ctrl s时 显示update conflict
  • WPF 禁用TextBox的触摸后自动弹出虚拟键盘

    原文 WPF 禁用TextBox的触摸后自动弹出虚拟键盘 前言 问题 如下截图 TextBox 在触摸点击后 会自动弹出windows的虚拟键盘 如何 禁用键盘的自动弹出 调用虚拟键盘 通过调用TapTip exe或者osk exe 主动弹
  • 剖析vue常见问题(三)之vue中key的作用和原理

    背景 说到vue中key的作用 大家都知道它可以唯一的确定一个dom元素 从而执行diff算法时更加高效 但是想更加详细的知道具体原因 我们还是需要从源码入手 详见源码 src core vdom patch js中的updateChild
  • 华为od机试 Python 【计算最少步数】

    题目 小明计划在周末去爬山 他有一份包含山峰高度的地图 其中 0 代表平地 而 1 到 9 表示不同的山峰高度 小明可以向上 下 左或右移动一步 但是 由于他不想爬得太累 他决定只在高度差不超过 k 的地方移动 现在他站在地图的左上角 你能
  • ES安全认证机制X-pack的安装及使用

    1 给ES Kibana安装x pack bin elasticsearch plugin install x pack bin kibana plugin install x pack 2 修改密码 注意 这个只能修改一次密码 同一个集群
  • 如何在Android应用中使用百度地图api

    本篇通过一个简单的示例一步步介绍如何在Android应用中使用百度地图api 1 下载百度地图移动版API Android 开发包 要在Android应用中使用百度地图API 就需要在工程中引用百度地图API开发包 这个开发包包含两个文件
  • 互联网行业为什么能吸引越来越多的年轻人?尤其是程序员……

    上周发的关于全国程序员4月的薪资依旧稳步上涨的推文 着实让羡慕了一把 虽然互联网大厂屡次传来裁员的消息 但依然阻挡不了年轻人向互联网行业涌入的决心 那么 问题来了 互联网行业为什么能吸引越来越多的年轻人 弹性上班 很多互联网公司都会有弹性上
  • linux xargs命令使用

    linux xargs命令使用 基本的命令是 command xargs I 选项 格式 xargs I rep str comand rep srt 其中rep str 为代替传递给xargs参数 可以使 等符号 其主要作用是当xargs
  • jquery获取一组radio被选中项的值

    相关文章 EXT使用中IE下的DOCTYPE问题 DOJO的菜单老出问题 IE6 IE7和Firefox对Div处理的差异 推荐圈子 EXT 更多相关推荐
  • 在Vi里面实现字符串的批量替换

    在Vi里面实现字符串的批量替换 在Vi里面实现字符串的批量替换 a 文件内全部替换 s abc def g 用def替换文件中所有的abc 例如把一个文本文件里面的 linuxidc com 全部替换成 linuxidc net s lin
  • 训练DPT:由测试test到训练train图像的一个epochs的optimize.zero_grad() loss.backward() optimizer.step()

    不知道大家有没有这样的感受 很多研究型论文通常会给出他们的test py文件 但是其train py文件往往是空白的 这时候感觉文章的test确实很nice 就想去探究其更原始 最优参数 训练出的参数过程 那么这里就不得不开始研究如何从te
  • ssm整合无法注入dao层

    spring整合mybatis 在部署项目时 一直报错 dao无法注入ioc容器 Error creating bean with name accountController Unsatisfied dependency expresse
  • 听说CentOS 8 已经成绝版了 ?难道就没有后续了么?很烦!

    一 CentOS 8 已是绝版 CentOS Stream 才是未来 CentOS 官方发文称 CentOS Stream 才是 CentOS 项目的未来 在接下来的一年里 将逐步把开发工作的重心从 CentOS Linux 往 CentO
  • Linux设置用户的密码有效期

    使用命令chage加参数可以查看 更改用户密码的有效期 1 查看用户密码有效期 chage l username 如下是永不会过期的类型 以下是90天有效期的类型 2 修改密码到期时间 通过参数 M 设置账户密码的到期时间 语法 chage
  • Lua里实现将table转成字符串(序列化)和将字符串转换回table(反序列化)

    file name table序列化和反序列化的问题 lua author Clark 陈泽丹 created 2011 12 22 备注 支持table的递归结构 但数据类型不支持function属性 因为function只是记录地址 在
  • 《GPU的革命》文章整理

    整理几年前写的文章 或许对初学CUDA编程的朋友有帮助 CUDA 线程执行模型分析 一 招兵 GPU的革命 CUDA 线程执行模型分析 二 大军未动粮草先行 GPU的革命 CUDA硬件实现分析 一 安营扎寨 GPU的革命 CUDA硬件实现分
  • 16个自动化测试面试问题与解答

    1 什么是自动化测试 自动化测试是一种使用自动化工具编写和执行测试人员测试脚本和案例的技术 自动化测试的主要目标是减少手动运行的测试用例数量 而不是完全取消手动测试 2 什么时候自动化测试 在以下情况下首选自动化 重复性任务 烟雾和理智测试
  • vue3项目修改浏览器的项目icon小图标

    修改vue3项目的浏览器的图标 vue2修改图标
  • AD每次更新PCB元器件位置会变动

    用AD画板 在重新更新元器件标识注视后 更新PCB后会出现某些器件移到了外面 把它摆放好以后 如果又对原理图中进行了改动 在更新PCB之后 刚才摆放好的元器件就又移到外面 另外 其它一些情况也会出现更新PCB位置变动的情况 下面是解决办法
  • 【matplotlib】可视化解决方案——如何向图表中添加数据表

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