三维茎叶图

Beginner

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

简介

本实验展示了如何使用 Python 中的 Matplotlib 库创建三维茎叶图。茎叶图是一种通过从基线向数据点绘制垂直线并在顶端放置标记来绘制数据点的方法。

虚拟机使用提示

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

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

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

导入必要的库

在这一步中,我们将使用 import 语句导入 Matplotlib 和 Numpy 库。

import matplotlib.pyplot as plt
import numpy as np

定义数据

在这一步中,我们将定义用于创建三维茎叶图的数据。我们将为角度创建一个线性间距数组,并使用正弦和余弦函数来计算 x 和 y 坐标。我们还将把 z 坐标定义为角度。

theta = np.linspace(0, 2*np.pi)
x = np.cos(theta - np.pi/2)
y = np.sin(theta - np.pi/2)
z = theta

创建三维茎叶图

在这一步中,我们将使用 Matplotlib 的 stem 函数创建三维茎叶图。我们将把 x、y 和 z 坐标作为参数传递给 stem 函数。

fig, ax = plt.subplots(subplot_kw=dict(projection='3d'))
ax.stem(x, y, z)

plt.show()

自定义绘图

在这一步中,我们将通过使用 bottom 参数更改基线,并使用 linefmtmarkerfmtbasefmt 参数更改格式,来对三维茎叶图进行自定义。

fig, ax = plt.subplots(subplot_kw=dict(projection='3d'))
markerline, stemlines, baseline = ax.stem(
    x, y, z, linefmt='grey', markerfmt='D', bottom=np.pi)
markerline.set_markerfacecolor('none')

plt.show()

更改绘图方向

在这一步中,我们将使用 orientation 参数来更改绘图的方向。我们将方向设置为 'x',以便茎沿 x 方向投影,并且基线位于 yz 平面中。

fig, ax = plt.subplots(subplot_kw=dict(projection='3d'))
markerline, stemlines, baseline = ax.stem(x, y, z, bottom=-1, orientation='x')
ax.set(xlabel='x', ylabel='y', zlabel='z')

plt.show()

总结

在本实验中,我们学习了如何使用 Python 中的 Matplotlib 库创建三维茎叶图。我们首先定义数据,然后使用 stem 函数创建绘图。我们还通过更改格式和方向对绘图进行了自定义。