Matplotlib - 线性与对数刻度



什么是刻度?

在 Matplotlib 库中,刻度指的是将数据值映射到绘图物理尺寸的方式。它们决定了数据值如何在绘图的坐标轴上表示和可视化。Matplotlib 支持各种类型的刻度,刻度的选择会显著影响数据在可视化中的呈现方式。

Matplotlib 中常见的刻度类型

以下是 Matplotlib 库中常见的刻度类型。

序号 刻度及用途
1

线性刻度

适用于大多数数值数据,这些数据的大小变化不大。

2

对数刻度

适用于涵盖多个数量级或呈现指数增长的数据集。

3

对称对数刻度

适用于既有正值也有负值的数据集。

4

Logit 刻度

专门用于介于 0 和 1 之间的数据。

线性刻度

线性刻度是默认用于表示绘图中坐标轴上数据的刻度。它是一种直接映射,其中数据值与其实际数值成正比。在线性刻度中,坐标轴上的等距表示数据值的等差。

线性刻度的特征

  • 等间隔 - 在线性刻度中,坐标轴上的等距对应于数据值的等差。
  • 线性映射 - 数据值与其在坐标轴上的位置之间的关系是线性的。

使用线性刻度

默认情况下,Matplotlib 库对 x 轴和 y 轴都使用线性刻度。要显式设置线性刻度,我们不需要使用任何特定函数,因为这是默认行为。但是,我们可以使用plt.xscale('linear')plt.yscale('linear')分别对 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-axis')
plt.ylabel('Y-axis')
plt.title('Linear Scale')
plt.show()
输出
Linear Scale

何时使用线性刻度

  • 当数据没有指数增长或值范围不太大时,通常使用线性刻度。
  • 它适用于表示大多数不表现出显著非线性行为的数值数据。

对数刻度

对数刻度使用对数映射来表示数据。当值范围很广时,这很有用,对数刻度有助于强调较小值的变化。

对数刻度的特征

以下是对数刻度的特征。

相等比率

在对数刻度中,坐标轴上的等距表示值之间的等比,而不是等差。

数据压缩

它将广泛的数据压缩到更易于阅读和解释的可视化中。

强调较小值

它比更大的值更强调较小值的变化。

使用对数刻度

要使用对数刻度,我们必须分别为 x 轴或 y 轴指定 plt.xscale('log') 或 plt.yscale('log')。对数刻度特别适用于可视化指数增长或涵盖多个数量级的现象。

何时使用对数刻度

  • 对数刻度适用于幅度变化很大的数据,或者需要突出显示较小值变化的情况。
  • 常用在金融(股票价格)、科学研究(分贝水平、地震震级)和生物学(pH 值)等领域。

以下是使用对数刻度的示例图。

示例

import matplotlib.pyplot as plt
import numpy as np
# Generating logarithmically spaced data
x = np.linspace(1, 10, 100)
y = np.log(x)
# Creating a plot with a logarithmic scale for the x-axis
plt.plot(x, y)
plt.xscale('log')  # Set logarithmic scale for the x-axis
plt.xlabel('X-axis (log scale)')
plt.ylabel('Y-axis')
plt.title('Logarithmic Scale')
plt.show()
输出
Logarithmic Scale

在绘图中使用对数刻度可以提供对值范围很广的数据的见解,从而更容易在同一绘图中可视化不同比例尺的模式和趋势。

累积分布函数的对数图

此示例显示累积分布函数的对数图。

示例

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
N = 100
data = np.random.randn(N)
X2 = np.sort(data)
F2 = np.array(range(N))/float(N)
plt.plot(X2, F2)
plt.xscale('log')
plt.yscale('log')
plt.show()
输出
cummulative_log
广告
© . All rights reserved.