Matplotlib 怎么设置坐标轴刻度?

文章导读
Previous Quiz Next 什么是轴刻度? 在 Matplotlib 库中,轴刻度指的是沿轴显示和间隔值的办法。Matplotlib 支持多种类型的刻度,这些刻度会影响数据在轴上的可视化和分布方式。
📋 目录
  1. A 什么是轴刻度?
  2. B 不同刻度的使用场景
  3. C 实现不同刻度
A A

Matplotlib - 轴刻度



Previous
Quiz
Next

什么是轴刻度?

在 Matplotlib 库中,轴刻度指的是沿轴显示和间隔值的办法。Matplotlib 支持多种类型的刻度,这些刻度会影响数据在轴上的可视化和分布方式。

matplotlib 库中有几种常见的轴刻度,它们是:

  • Linear Scale(默认)

  • Logarithmic Scale

  • Symmetrical Logarithmic Scale (Symlog)

选择合适的轴刻度取决于数据性质和所需的视觉效果。选择能够有效表示数据并在图表中传达准确信息的刻度非常重要。

不同刻度的使用场景

  • Linear − 适用于显示值之间间距均匀的数据。

  • Logarithmic − 适用于表示幅度范围宽的数据。

  • Symmetrical Logarithmic − 适用于包含正值和负值且不排除零的数据集。

实现不同刻度

让我们详细了解每种刻度在图表中的实现方式。

线性刻度

在 Matplotlib 中,线性刻度表示用于绘制数据的标准线性坐标系。它是默认应用于 x 轴和 y 轴的缩放方式,除非另有指定。

线性刻度的特性

均匀间距 − 在线性刻度上,轴上的等增量表示数据中的等差异。例如,0 到 1 之间的距离与 1 到 2 之间的距离相同。

线性关系 − 在线性刻度上绘制的數據点遵循线性关系,即绘图点之间的变化与数据变化成比例。

示例 - 使用线性刻度

在这个示例中,x 轴和 y 轴默认使用线性刻度。轴上的每个单位表示数据中的恒定增量。

import matplotlib.pyplot as plt
# 示例数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 创建带有线性刻度(默认)的图表
plt.plot(x, y)
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('线性刻度图表')
plt.show()
输出
Axis Linear Scale

对数刻度

在 Matplotlib 中,我们可以使用 plt.xscale()plt.yscale() 函数,或者在使用轴对象 ax 时使用对应的方法 ax.set_xscale()ax.set_yscale(),为轴设置对数刻度。这些函数允许我们将轴的刻度更改为对数刻度。

语法

以下是将 x 轴更改为对数刻度的语法,使用 plt.xscale()

plt.xscale('log')

ax.set_xscale()

ax.set_xscale('log')

以下是将 y 轴更改为对数刻度的语法,使用 plt.yscale()

plt.yscale('log')

使用 ax.set_yscale()

ax.set_yscale('log')

示例 - 使用对数刻度

这是一个演示如何为 x 轴和 y 轴设置对数刻度的示例

import matplotlib.pyplot as plt
# 示例数据
x = [1, 2, 3, 4, 5]
y = [10, 100, 1000, 10000, 100000]
# 创建带有两个轴的对数刻度的图表
plt.plot(x, y)
# 为 x 轴和 y 轴设置对数刻度
plt.xscale('log')
plt.yscale('log')
plt.xlabel('X轴 (对数刻度)')
plt.ylabel('Y轴 (对数刻度)')
plt.title('对数刻度图表')
plt.show()
输出
Axis Logarithmic Scale

对称对数刻度 (Symlog)

在 Matplotlib 中,对称对数刻度通常称为 symlog,它允许在对数刻度上绘制数据,同时对零附近的正值和负值进行对称处理。

symlog 刻度结合了零附近的值的线性缩放和远离零的值的对数缩放。

语法

以下是为轴设置对称对数刻度的语法 −

对于 x 轴

plt.xscale('symlog', linthresh=base, linscale=lin_scale)

对于 y 轴

plt.yscale('symlog', linthresh=base, linscale=lin_scale)

其中,

  • linthresh − 线性阈值,决定了线性行为和对数行为之间转换的位置。

  • base − 对数的底数(默认为 10)。

  • linscale − 零附近线性范围的缩放因子(默认为 1.0)。

示例 - 使用对称对数刻度

在这个示例中,plt.yscale('symlog', linthresh=0.1) 将 y 轴设置为对称对数刻度,线性阈值 (linthresh) 为 0.1。接近零的值将以线性方式显示,而远离零的值将遵循对数刻度。

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-10, 10, 500)
y = np.sinh(x)
plt.plot(x, y)
plt.yscale('symlog', linthresh=0.1)  # 为 y 轴应用对称对数刻度
plt.title('对称对数刻度图表')
plt.show()
输出
Axis Symmetric Log

使用不同刻度的图表

在这个示例中,我们使用 matplotlib 库绘制带有不同刻度的图表。

示例 - 同时使用多种刻度

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

t = np.arange(0.01, 10.0, 0.01)
data1 = np.exp(t)
data2 = np.sin(2 * np.pi * t)
fig, ax1 = plt.subplots()
color = 'red'

ax1.set_xlabel('时间 (s)')
ax1.set_ylabel('exp', color=color)
ax1.plot(t, data1, color=color)
ax1.tick_params(axis='y', labelcolor=color)
ax2 = ax1.twinx()

color = 'blue'
ax2.set_ylabel('sin', color=color)
ax2.plot(t, data2, color=color)
ax2.tick_params(axis='y', labelcolor=color)

plt.show()
输出
Different Scales

Matplotlib 中具有不同刻度的多个轴

在这个示例中,我们将看到如何创建共享的 Y 轴。

示例 - 使用多个轴的刻度

import matplotlib.pyplot as plt
fig, ax1 = plt.subplots()
ax1.plot([1, 2, 3, 4, 5], [3, 5, 7, 1, 9], color='red')
ax2 = ax1.twinx()
ax2.plot([11, 12, 31, 41, 15], [13, 51, 17, 11, 76], color='blue')
fig.tight_layout()
plt.show()
输出
Multipleaxes Scales