简介
本教程演示如何使用 Python 的 Matplotlib 库创建一个简单的折线图,并带有一个表示曲线下面积的阴影区域。该图包括一个文本标签、轴标签以及自定义刻度位置和标签。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签页,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会及时为你解决问题。
定义函数
首先,定义要绘制的函数。在这个例子中,函数是 (x - 3) _ (x - 5) _ (x - 7) + 85。
def func(x):
return (x - 3) * (x - 5) * (x - 7) + 85
定义积分限
接下来,定义积分的限。在这个例子中,限为 a = 2 和 b = 9。
a, b = 2, 9
创建 x 和 y 值
使用 numpy 的 linspace 函数生成一系列 x 值。然后,使用步骤 1 中定义的函数生成相应的 y 值。
import numpy as np
x = np.linspace(0, 10)
y = func(x)
创建绘图
使用 subplots 创建一个图形和轴对象。使用 plot 绘制 x 和 y 值。使用 set_ylim 将 y 轴范围设置为从 0 开始。
fig, ax = plt.subplots()
ax.plot(x, y, 'r', linewidth=2)
ax.set_ylim(bottom=0)
创建阴影区域
使用 Polygon 补丁创建阴影区域。使用 linspace 和步骤 1 中定义的函数生成该区域的 x 和 y 值。然后,将该区域的顶点定义为元组列表。最后,创建 Polygon 对象并使用 add_patch 将其添加到轴上。
from matplotlib.patches import Polygon
ix = np.linspace(a, b)
iy = func(ix)
verts = [(a, 0), *zip(ix, iy), (b, 0)]
poly = Polygon(verts, facecolor='0.9', edgecolor='0.5')
ax.add_patch(poly)
添加积分标签
使用 text 向绘图添加积分标签。该标签应位于 a 和 b 之间中点处,并使用数学文本进行格式化。
ax.text(0.5 * (a + b), 30, r"$\int_a^b f(x)\mathrm{d}x$",
horizontalalignment='center', fontsize=20)
添加轴标签和刻度标签
使用 figtext 添加 x 轴和 y 轴标签。使用 spines 隐藏顶部和右侧的边框。使用 set_xticks 和 set_yticks 设置自定义刻度位置和标签。
fig.text(0.9, 0.05, '$x$')
fig.text(0.1, 0.9, '$y$')
ax.spines[['top', 'right']].set_visible(False)
ax.set_xticks([a, b], labels=['$a$', '$b$'])
ax.set_yticks([])
显示绘图
使用 show 来显示绘图。
plt.show()
总结
本教程展示了如何使用 Python 的 Matplotlib 库创建一个简单的折线图,并带有一个表示曲线下面积的阴影区域。该图包括一个文本标签、轴标签以及自定义的刻度位置和标签。按照本教程中概述的步骤,你可以为自己的数据创建类似的图。