axvline和 axhline 在给定的 x / y 位置绘制无限的垂直/水平线。它们通常用于标记特殊数据值,例如在本例中标注 S 形函数的中心值和极限值。import matplotlib.pyplot as pltimport numpy as npt = np.linspace(-10, 10, 100)sig = 1 / (1 + np.exp(-t))fig, ax = plt.subplots()ax.axhline(y=0, color="black", linestyle="--")ax.axhline(y=0.5, color="black", linestyle=":")ax.axhline(y=1.0, color="black", linestyle="--")ax.axvline(color="grey")ax.axline((0, 0.5), slope=0.25, color="black", linestyle=(0, (5, 5)))ax.plot(t, sig, linewidth=2, label=r"$\sigma(t) = \frac{1}{1 + e^{-t}}$")ax.set(xlim=(-10, 10), xlabel="t")ax.legend(fontsize=14)plt.show()
# 1. 导入库import matplotlib.pyplot as pltimport numpy as np# 2. 生成数据t = np.linspace(-10, 10, 100) # t 是一个包含 100 个点的数组,均匀分布在区间 [-10, 10] 上sig = 1 / (1 + np.exp(-t)) # sig 是 Sigmoid 函数的值# 3. 创建图形和坐标轴fig, ax = plt.subplots() # 生成一个图形对象 fig 和一个坐标轴对象 ax,后续所有绘图操作都在 ax 上进行。# 4. 绘制辅助线ax.axhline(y=0, color="black", linestyle="--") # 水平线:y=0(黑色虚线):Sigmoid 函数的下渐近线ax.axhline(y=0.5, color="black", linestyle=":") # 水平线:y=0.5(黑色点线):Sigmoid 函数的中点,对应于 t=0 处的函数值ax.axhline(y=1.0, color="black", linestyle="--") # 水平线:y=1(黑色虚线):Sigmoid 函数的上渐近线ax.axvline(color="grey") # 垂直线(灰色):x=0,标记函数的对称中心(也是拐点)ax.axline((0, 0.5), slope=0.25, color="black", linestyle=(0, (5, 5))) # 斜线(黑色,长虚线):通过点 (0, 0.5),斜率为 0.25# 这条线是 Sigmoid 函数在 t=0 处的 切线,因为 Sigmoid 在零点的导数为0.25# 格式:(offset, (on_off_sequence)):# offset(偏移量):这里为 0,表示虚线图案的起始点没有偏移,直接从第一个 on 长度开始。# (on_off_sequence):一个元组,定义线段的“画线”和“空白”长度(单位:点)。(5, 5) 表示:# 先画 5 点长的线段,# 然后留 5 点长的空白,# 如此循环重复。# 因此,最终效果是一条由 5 点线 + 5 点空 组成的均匀虚线,# 与默认的 linestyle='dashed' 或 'dotted' 不同,这里用较长的线段和空白,使得虚线更加稀疏、醒目。# 斜线直观地展示了该点的瞬时变化率# 5. 绘制 Sigmoid 曲线ax.plot(t, sig, linewidth=2, label=r"$\sigma(t) = \frac{1}{1 + e^{-t}}$}")# 用蓝色(默认颜色)绘制 Sigmoid 函数曲线,线宽为 2。# label 使用 LaTeX 格式显示公式,用于后续图例# 6. 设置坐标轴与图例ax.set(xlim=(-10, 10), xlabel="t")# xlim=(-10, 10):固定 x 轴显示范围。# xlabel="t":x 轴标签为 t。ax.legend(fontsize=14) # ax.legend():显示图例,字体大小设为 14。# 7. 显示图形plt.show()
这是机器学习中常用的激活函数,输出范围在 (0, 1) 之间,具有平滑的 S 形曲线
axline 也可以与transform参数一起使用,该参数适用于点,但不适用于斜率。这对于绘制带有固定斜度的斜角网格线非常有用,这些网格线在移动图限时依然保持原位。import matplotlib.pyplot as pltimport numpy as npfig, ax = plt.subplots()for pos in np.linspace(-2, 1, 10): ax.axline((pos, 0), slope=0.5, color='k', transform=ax.transAxes)ax.set(xlim=(0, 1), ylim=(0, 1))plt.show()
# 1. 导入库import matplotlib.pyplot as pltimport numpy as np# 2. 创建图形和坐标轴fix, ax = plt.subplots() # 创建一个图形 fig 和一个坐标轴对象 ax,后续绘图均在该坐标轴上进行。# 3. 循环绘制多条直线for pos in np.linspace(-2, 1, 10): # 生成 10 个等间距数值,范围从 -2 到 1(包含端点)。这些值将作为每条直线在 Axes 坐标系 中的起始 x 坐标。 ax.axline((pos, 0), slope=0.5, color="k", transform=ax.transAxes) # 绘制一条无限直线,该直线经过点 (pos, 0),斜率为 0.5。 # transform=ax.transAxes:指定直线定义时使用的坐标系为 Axes 坐标系。# 4. 设置坐标轴范围ax.set(xlim=(0, 1), ylim=(0, 1)) # 将数据坐标轴的范围固定为 [0,1] 区间# 5. 显示图形plt.show()