Matplotlib - 对数坐标轴



什么是对数坐标轴?

Matplotlib 中的对数坐标轴允许在绘图中使用对数刻度而不是线性刻度来表示一个或两个坐标轴。当处理跨越多个数量级的广泛数据值时,这种缩放方式特别有用。与其像线性缩放那样平等地表示每个单位,我们可以使用对数缩放,它根据数量级来表示相等的间隔。

在比较线性坐标轴和对数坐标轴之前,让我们先回顾一下线性坐标轴。

什么是线性坐标轴?

在绘图和图形的上下文中,线性坐标轴指的是标准的笛卡尔坐标系,其中坐标轴以线性或算术刻度表示。在这个系统中,我们有以下内容。

X 轴和 Y 轴 - 水平轴通常是 X 轴,表示一个变量,而垂直轴是 Y 轴,表示另一个变量。

等间距 - 每个坐标轴上的线性刻度表示绘制值中的相等增量。例如,在线性刻度上,0 到 1 之间的距离与 5 到 6 之间的距离相同。

比例表示 - 轴上的每个单位都直接对应于表示值的单位变化。例如,从 10 移动到 11 表示与从 20 移动到 21 相同的增加。

直线 - 变量之间的关系在线性刻度上表示为直线。对于线性关系,当连接绘制的数据点时,它们形成一条直线。

适用性 - 线性坐标轴适用于可视化变量之间关系为线性或表示的值在整个刻度范围内变化不大的数据。

线性与对数刻度

线性刻度和对数刻度是在绘图中表示轴上数据的两种不同方式,每种方式都具有适合不同类型的数据分布和可视化的独特特征。

  线性坐标轴 对数坐标轴
缩放 这使用了线性缩放;轴上每个值之间的距离是统一的,表示绘制数量的相等增量。 对数缩放根据数量级而不是线性增量来表示值。轴上的每个刻度都对应于基值(例如,10 或 e)的幂。
间隔 轴上的单位直接对应于数据值。例如,在线性刻度 0 到 10 上,每个单位(例如,从 0 到 1,1 到 2)表示相等的增量 1。 在对数刻度上,轴上的相等距离表示乘法因子而不是加法因子。例如,在从 1 到 100 的对数刻度上,距离可能表示 10 的幂(1、10、100)。
表示 线性坐标轴通常用于绘制点之间的关系最好用线性进展来描述的数据。 对数坐标轴适用于跨越多个数量级的数据,例如指数增长或衰减。它们压缩了大范围的值,使它们在视觉上易于管理。
何时使用 通常用于显示变量之间线性关系的数据或数据值范围不大的数据。 对于可视化跨越多个数量级的数据很有用,尤其是在处理指数增长或衰减、频率分布或数据集中在某些范围内的异常值时。
绘图 Image Image

对数刻度的类型

对数坐标轴中有多种类型的对数刻度可用。让我们一一查看。

对数 X 轴

绘图中的对数 X 轴指的是 X 轴上的刻度是对数而不是线性的。这种缩放将 X 轴上的数据表示从线性进展转换为对数进展,使其适合于可视化跨越多个数量级或沿 X 轴表现出指数行为的数据。

对数 X 轴的特征

缩放方法 - 与线性缩放中沿 X 轴以相等增量表示值不同,对数 X 轴根据基值(例如,10 或 e)的幂来表示值。

不等间距 - 轴上的相等距离对应于乘法因子或数量级,而不是固定间隔。

用例 - 当处理涵盖广泛值的数据集(例如指数增长、大时间跨度或数据分布集中在特定范围内的异常值)时,对数 X 轴非常有用。

示例

在此示例中,plt.xscale('log') 函数将 X 轴设置为对数刻度。它将 X 轴从线性刻度转换为对数刻度,从而能够更好地可视化数据,尤其是在处理指数或范围广泛的 X 值时。

import matplotlib.pyplot as plt
import numpy as np

# Generating sample data
x = np.linspace(1, 1000, 100)
y = np.sin(x) * np.log10(x)  # Generating data for demonstration

# Creating a plot with logarithmic x-axis
plt.figure(figsize=(8, 4))
plt.plot(x, y)
plt.xscale('log')  # Set x-axis to logarithmic scale
plt.xlabel('X-axis (Logarithmic Scale)')
plt.ylabel('Y-axis')
plt.title('Plot with Logarithmic X-axis')
plt.show()
输出
LG X-Axis

对数 X 轴提供了对数据可视化的不同视角,强调了沿 X 轴不同数量级上的指数行为或模式。

对数 Y 轴

对数 Y 轴,我们通常将其称为 Y 轴上的对数刻度,表示绘图中的一种缩放方法,其中 Y 轴上的值以对数而不是线性方式显示。当处理跨越多个数量级的数据时,这种缩放方式特别有用。

Matplotlib 中的对数 Y 轴允许有效地可视化涵盖广泛值的数据,通过使用线性刻度更容易观察可能不容易看到的模式或趋势。

对数 Y 轴的特征

对数缩放 - Y 轴上的值以对数方式缩放,其中每个单位增加表示一个乘法因子,即基值(通常为 10 或 e)的幂,而不是相等的增量。

相等因子 - Y 轴上的相等距离表示相等的乘法因子,而不是相等的数值差异。例如,在对数刻度上,1、10、100 的间隔表示 10 的因子。

数据压缩 - 对数缩放通过使可视化跨越多个数量级的数据变得更容易来压缩广泛的值。

示例

在此示例中,plt.yscale('log') 将 Y 轴设置为对数刻度。结果,指数增长数据以对数刻度沿 Y 轴显示,通过方便地在广泛的值范围内可视化数据。

import matplotlib.pyplot as plt
import numpy as np

# Sample data with a wide range
x = np.linspace(1, 100, 100)
y = np.exp(x)  # Exponential growth for demonstration

# Creating a plot with a logarithmic y-axis
plt.plot(x, y)
plt.yscale('log')  # Set y-axis to logarithmic scale
plt.xlabel('X-axis')
plt.ylabel('Y-axis (Logarithmic Scale)')
plt.title('Plot with Logarithmic Y-axis')
plt.show()
输出
Log Y-Axis

双对数坐标轴

双对数刻度,即图中x轴和y轴都使用对数刻度,表示基于数量级而不是线性增量的值。当处理在水平和垂直方向上跨越多个数量级的数据时,这种刻度特别有用。

当可视化在水平和垂直方向上跨越多个数量级的数据时,双对数刻度非常有效,它压缩了值的范围,从而改善可视化效果和模式识别。

双对数坐标轴的使用场景

数据范围广 - 当x轴和y轴数据都跨越多个数量级时,双对数刻度会压缩可视化表示,从而获得更好的见解。

指数关系 - 可视化两个维度上具有指数关系的数据。

科学和工程数据 - 常用于科学和工程绘图中,其中值跨越多个尺度。

示例

在这个例子中,plt.xscale('log')plt.yscale('log') 函数分别将x轴和y轴设置为对数刻度。该图以每个轴都表示数量级值的方式可视化数据点,从而更好地可视化在两个维度上跨越广泛值的范围的数据。

import matplotlib.pyplot as plt
import numpy as np

# Generating sample data with a wide range
x = np.linspace(1, 1000, 100)
y = np.logspace(1, 4, 100)  # Logarithmically spaced data for demonstration

# Creating a plot with logarithmic scaling for both axes
plt.figure(figsize=(8, 6))
plt.scatter(x, y)
plt.xscale('log')  # Set x-axis to logarithmic scale
plt.yscale('log')  # Set y-axis to logarithmic scale
plt.xlabel('X-axis (Logarithmic Scale)')
plt.ylabel('Y-axis (Logarithmic Scale)')
plt.title('Plot with Logarithmic Both Axes')
plt.show()
输出
Log Both

对数y轴刻度

在这个例子中,我们使用matplotlib库绘制对数y轴刻度。

示例

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
x = np.linspace(1, 100, 1000)
y = np.log(x)
plt.yscale('log')
plt.plot(x, y, c="red", lw=3, linestyle="dashdot", label="y=log(x)")
plt.legend()
plt.show()
输出
logarithmic_bins
广告