在不同平面中创建二维条形图

Beginner

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

简介

在本实验中,我们将学习如何创建一个 3D 图形,并将 2D 条形图投影到不同平面上。我们将使用 Python 中的 Matplotlib 库来生成可视化效果。本实验假定你对 Python 语法和 Matplotlib 库有基本的了解。

虚拟机使用提示

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

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

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

导入库

我们将首先为本实验导入必要的库。我们将使用 NumPy 库生成随机数据,并使用 Matplotlib 库创建 3D 图形。

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(19680801)

创建图形和子图

接下来,我们将为 3D 图形创建一个图形和子图。我们将使用 add_subplot() 方法创建一个 3D 投影。

fig = plt.figure()
ax = fig.add_subplot(projection='3d')

生成条形图的数据

现在我们将生成条形图的数据。我们将创建四组数据,每组有 20 个值。我们将使用 NumPy 的 arange() 方法创建一个包含 20 个值的数组,并使用 NumPy 的 random.rand() 方法为每组数据生成随机值。

colors = ['r', 'g', 'b', 'y']
yticks = [3, 2, 1, 0]
for c, k in zip(colors, yticks):
    xs = np.arange(20)
    ys = np.random.rand(20)

自定义条形图

现在我们将自定义条形图。我们将创建一个颜色数组,并使用 bar() 方法绘制条形图。我们将把 zdir 参数设置为 'y',以便将条形图投影到 y 轴平面上。我们还将把 alpha 参数设置为 0.8,以调整条形的透明度。

    cs = [c] * len(xs)
    cs[0] = 'c'
    ax.bar(xs, ys, zs=k, zdir='y', color=cs, alpha=0.8)

自定义坐标轴

现在我们将自定义 3D 图形的坐标轴。我们将分别使用 set_xlabel()set_ylabel()set_zlabel() 方法来设置 x、y 和 z 轴的标签。我们还将使用 set_yticks() 方法来设置 y 轴上的刻度。

ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_yticks(yticks)

显示图形

我们将使用 show() 方法来显示 3D 图形。

plt.show()

总结

在这个实验中,我们学习了如何使用 Python 中的 Matplotlib 库创建一个 3D 图形,其中 2D 条形图被投影到不同的平面上。我们生成了随机数据,并自定义了图形的条形图和坐标轴。然后,我们使用 show() 方法显示了该图形。