使用 XKCD 风格的 Matplotlib 可视化

Beginner

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

简介

Matplotlib 是一个数据可视化库,提供了各种用于创建二维和三维图表的工具。它基于 NumPy 库构建,其主要目的是以简单有效的方式可视化数据。在本教程中,我们将学习如何使用来自 XKCD 网络漫画的 xkcd 风格创建两种不同类型的图表。

虚拟机使用提示

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

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

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

导入库

第一步是导入必要的库。我们将使用 matplotlib.pyplotnumpy 库。

import matplotlib.pyplot as plt
import numpy as np

创建一个 XKCD 风格的图表

在这一步中,我们将创建一个 XKCD 风格的图表,展示时间与整体健康状况之间的关系。该图表基于 XKCD 的《拥有炉灶》漫画。

with plt.xkcd():
    fig = plt.figure()
    ax = fig.add_axes((0.1, 0.2, 0.8, 0.7))
    ax.spines[['top', 'right']].set_visible(False)
    ax.set_xticks([])
    ax.set_yticks([])
    ax.set_ylim([-30, 10])

    data = np.ones(100)
    data[70:] -= np.arange(30)

    ax.annotate(
        'THE DAY I REALIZED\nI COULD COOK BACON\nWHENEVER I WANTED',
        xy=(70, 1), arrowprops=dict(arrowstyle='->'), xytext=(15, -10))

    ax.plot(data)

    ax.set_xlabel('time')
    ax.set_ylabel('my overall health')
    fig.text(
        0.5, 0.05,
        '"Stove Ownership" from xkcd by Randall Munroe',
        ha='center')

plt.show()

创建一个 XKCD 风格的柱状图

在这一步中,我们将创建一个 XKCD 风格的柱状图。该图表基于 XKCD 的《目前的数据》漫画。

with plt.xkcd():
    fig = plt.figure()
    ax = fig.add_axes((0.1, 0.2, 0.8, 0.7))
    ax.bar([0, 1], [0, 100], 0.25)
    ax.spines[['top', 'right']].set_visible(False)
    ax.xaxis.set_ticks_position('bottom')
    ax.set_xticks([0, 1])
    ax.set_xticklabels(['经实验证实', '经实验证伪'])
    ax.set_xlim([-0.5, 1.5])
    ax.set_yticks([])
    ax.set_ylim([0, 110])

    ax.set_title("超自然能力的说法")

    fig.text(
        0.5, 0.05,
        '"The Data So Far" from xkcd by Randall Munroe',
        ha='center')

plt.show()

总结

在本教程中,我们学习了如何使用来自 XKCD 网络漫画的 xkcd 风格创建两种不同类型的图表。我们首先创建了一个展示时间与整体健康状况之间关系的 xkcd 风格图表。然后,我们创建了一个基于 XKCD 的《目前的数据》漫画的 XKCD 风格柱状图。通过使用 xkcd 风格,我们可以创建有趣且引人入胜的可视化效果,肯定能吸引我们受众的注意力。