Matplotlib 表格函数

Beginner

This tutorial is from open-source community. Access the source code

简介

在本实验中,我们将学习如何使用 Matplotlib 的表格函数在绘图中显示表格。我们将使用一个示例数据集来可视化多年来不同自然灾害造成的损失。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。

导入所需库

我们将首先导入项目所需的库。我们将使用 Matplotlib 库来创建表格。

import matplotlib.pyplot as plt
import numpy as np

创建数据集

接下来,我们将创建一个示例数据集,以可视化多年来不同自然灾害造成的损失。我们将使用二维列表来存储数据,并用元组来存储列名。

data = [[ 66386, 174296,  75131, 577908,  32015],
        [ 58230, 381139,  78045,  99308, 160454],
        [ 89135,  80552, 152558, 497981, 603535],
        [ 78415,  81858, 150656, 193263,  69638],
        [139361, 331509, 343164, 781380,  52269]]

columns = ('Freeze', 'Wind', 'Flood', 'Quake', 'Hail')

创建行标签

我们将为数据集创建行标签,以表示记录损失情况的年数。我们将使用列表推导式来创建行标签。

rows = ['%d year' % x for x in (100, 50, 20, 10, 5)]

创建配色方案

我们将使用plt.cm.BuPu函数为表格创建一种配色方案。我们将为各行使用浅蓝色和浅紫色的柔和色调。

colors = plt.cm.BuPu(np.linspace(0, 0.5, len(rows)))

创建垂直堆叠柱状图

我们将使用plt.bar函数创建一个垂直堆叠柱状图,以展示多年来不同自然灾害造成的损失。我们将使用一个 for 循环遍历每一行数据并绘制柱状图。

n_rows = len(data)

index = np.arange(len(columns)) + 0.3
bar_width = 0.4

y_offset = np.zeros(len(columns))

cell_text = []
for row in range(n_rows):
    plt.bar(index, data[row], bar_width, bottom=y_offset, color=colors[row])
    y_offset = y_offset + data[row]
    cell_text.append(['%1.1f' % (x / 1000.0) for x in y_offset])

反转颜色和文本标签

我们将使用[::-1]函数来反转表格的颜色和文本标签,以便在顶部显示最后一个值。

colors = colors[::-1]
cell_text.reverse()

向绘图中添加表格

我们将使用plt.table函数在绘图的底部添加一个表格。我们会将单元格文本、行标签、行颜色和列标签作为参数传递给该函数。

the_table = plt.table(cellText=cell_text,
                      rowLabels=rows,
                      rowColours=colors,
                      colLabels=columns,
                      loc='bottom')

调整绘图布局

我们将使用plt.subplots_adjust函数来调整绘图的布局,以便为表格留出空间。

plt.subplots_adjust(left=0.2, bottom=0.2)

添加轴标签和标题

我们将使用plt.ylabelplt.yticksplt.xticksplt.title函数为绘图添加轴标签和标题。

values = np.arange(0, 2500, 500)
value_increment = 1000

plt.ylabel(f"Loss in ${value_increment}'s")
plt.yticks(values * value_increment, ['%d' % val for val in values])
plt.xticks([])
plt.title('Loss by Disaster')

显示绘图

我们将使用plt.show函数来显示绘图。

plt.show()

总结

在本实验中,我们学习了如何使用 Matplotlib 的表格函数在绘图中显示表格。我们使用了一个示例数据集来可视化多年来不同自然灾害造成的损失。我们遵循了以下步骤:

  1. 导入所需库
  2. 创建数据集
  3. 创建行标签
  4. 创建配色方案
  5. 创建垂直堆叠柱状图
  6. 反转颜色和文本标签
  7. 向绘图中添加表格
  8. 调整绘图布局
  9. 添加轴标签和标题
  10. 显示绘图。