在绘制图表时,如果数值增长非常迅速(例如 10, 100, 1000 等),对数坐标 会非常有帮助。通常情况下,图表中的数值是以相同的增量增长的(例如 1, 2, 3…),但在对数坐标中,数值是通过倍数增长的(例如 10, 100, 1000…)。这使得我们可以更清晰地观察极大数值中的规律。Matplotlib 允许我们将 y 轴更改为对数坐标,这样即使是非常大的数字也能很好地适应图表,从而更容易理解趋势。让我们来看看几种实现这一目标的方法。
目录
使用 set_yscale("log")
我们可以使用 <a href="https://www.geeksforgeeks.org/python/matplotlib-axes-axes-setyscale-in-python/">setyscale("log") 方法将 y 轴转换为对数坐标。这在绘制指数级增长或跨越多个数量级的数据时非常有用。通过对 Axes 对象应用此方法,我们可以确保 y 值以对数标度显示,同时保持 x 轴为线性标度。 示例:
Python
CODEBLOCK_ae97219e
Output
!OutputUsing set_yscale("log")
解释: x 值是连续的,而 y 呈指数级增长。 plt.subplots() 创建了图形和坐标轴, ax.plot(x, y ) 绘制了数据, ax.set_yscale("log") 则将 y 轴 应用了对数坐标,以便更好地进行可视化。
目录
- 使用 plt.yscale("log")
- 使用 matplotlib.scale 中的 Logscale
- 使用 loglog() 同时设置两个坐标轴
使用 plt.yscale("log")
除了将 log scale 应用于特定的坐标轴对象外,我们还可以使用 plt.yscale("log") 在绘制数据之前修改整个图形的 y 轴。当处理简单的图表时,这种方法非常有益,因为它确保图表中的所有 y 值都遵循对数坐标,而无需显式修改单个坐标轴。 示例:
Python
CODEBLOCK_34b7dabf
Output
!OutputUsing plt.yscale("log")
解释: data 列表包含指数值 (10^i for i from 0 to 4)。 plt.yscale("log") 将 y 轴 设置为对数坐标,使指数增长更加清晰。 plt.plot(data) 绘制了数值, plt.show() 则显示了图形。
使用 matplotlib.scale 中的 Logscale
为了对缩放进行更多的控制,Matplotlib 提供了 LogScale 类。这允许我们使用 ax.set_yscale(LogScale(ax.yaxis)) 显式定义坐标轴的对数标度。当我们需要更多自定义功能,或者处理多个子图且特定坐标轴需要对数缩放时,此方法非常有用。 示例:
Python
CODEBLOCK_159e478b
Output
!OutputUsing logscale
解释: x 值是连续的,而 y 呈指数级增长。 plt.subplots() 创建了图形和坐标轴, ax.set_yscale(LogScale(ax.yaxis)) 则显式地将 y 轴应用了对数坐标。 ax.plot(x, y ) 函数绘制了数据。
使用 loglog() 同时设置两个坐标轴
loglog() 函数 可以同时将 x 和 y 轴转换为对数坐标。这对于绘制幂律关系或分析在两个维度上都遵循指数趋势的数据特别有用。通过传入 loglog(x, y, marker="o"),我们确保两个坐标轴都遵循对数标度,从而使可视化结果更易于解读。 示例:
Python
CODEBLOCK_290f237a
Output
!Outputusing plt.loglog()
解释: plt.loglog(x, y, marker="o") 函数在绘制数据的同时对两个坐标轴应用了对数坐标,使其成为可视化幂律关系的理想选择。