Matplotlib 简明教程

Matplotlib - Linear and Logarthmic Scales

What are Scales?

在 Matplotlib 库中,比例是指将数据值映射到绘图物理尺寸的过程。它们确定数据值如何沿着绘图的坐标轴表示和可视化。Matplotlib 支持各种类型的比例,并且比例的选择会显著影响可视化中数据的感知方式。

Common Types of Scales in Matplotlib

以下是 matplotlib 库中可用的常见比例类型:

Sr.No

Scale & Usage

1

Linear Scale 适用于大多数幅度变化不大的数值数据。

2

Logarithmic Scale 非常适合跨越几个数量级的、或者表现出指数增长的数据集。

3

Symmetrical Logarithmic Scale 适用于既包含正值又包含负值的数据集。

4

Logit Scale 专门用于界于 0 和 1 之间的数据。

Linear Scale

线性刻度是用于以沿绘图中轴线表示数据的默认刻度。这是直接映射,其中数据值直接按其实际数值比例进行绘图。在线性刻度中,轴线上的等距表示数据中的等差。

Characteristics of Linear Scale

  1. Equal Intervals - 在线性刻度中,轴线上的等距对应于数据值中的等差。

  2. Linear Mapping - 数据值与其在轴线上的位置之间的关系是线性的。

Using Linear Scale

默认情况下,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

When to Use Linear Scale

  1. 线性刻度通常在数据没有指数增长或值范围不太大时使用。

  2. 它适用于表示大多数没有明显非线性行为的数字数据。

Logarithmic Scale

对数刻度使用对数映射来表示数据。当值范围较大并且对数刻度有助于强调较小值的改变时,这非常有用。

Characteristics of Logarithmic Scale

以下是对数刻度的特征。

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

它将广泛的数据范围压缩成更易于阅读和解读的可视化效果。

它更强调较小值的变化,而不是较大值的变化。

Using Logarithmic Scale

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

When to Use Logarithmic Scale

  1. 对数刻度适用于幅度变化较大的数据,或者需要强调较小值变化的数据。

  2. 通常用于金融(股票价格)、科学研究(分贝级、地震震级)和生物学(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

在绘图中使用对数刻度可以深入了解具有广泛值的数据,从而更容易在同一绘图中跨不同刻度可视化模式和趋势。

Logarithmic plot of a cumulative distribution function

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

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