Matplotlib 简明教程

Matplotlib - Symmetrical Logarithmic and Logit Scales

Symmetrical Logarithmic Scale

对称对数比例尺类似于对数比例尺。它通常缩写为 symlog ,是一种用于表示轴上数据的比例尺,其中值使用对数间隔以对称于零的方式分布。它为正值和负值提供了对数式比例尺,同时容纳零。

若要在 x 轴和 y 轴上应用对称对数比例尺,我们必须分别使用 plt.xscale(‘symlog’)plt.yscale(‘symlog’)

Characteristics of Symmetrical Logarithmic Scale

对称对数比例尺具有以下特征。

  1. Symmetrical Behavior − 对正负值以对数方式表示,同时处理零。

  2. Linear Near Zero − 在转换为对数行为之前,比例在给定范围 (linthresh) 内围绕零呈线性。

Parameters for Symmetrical Logarithmic Scale

linthresh − 线性阈值,确定在转换为对数比例尺之前比例尺呈线性行为时的零值周围的范围。

何时使用对称对数比例尺:

  1. Data around Zero − 适用于包含围绕零值的范围广泛的正值和负值的的数据集。

  2. Avoiding Symmetry Bias − 需要对正值和负值进行对称表示时,且无偏向于任何一方。

Importance of Symmetrical Logarithmic Scale

对称对数比例尺提供了一种容纳正值和负值的对数式比例尺,使其对于可视化围绕零值平衡分布的数据集非常有用。

它还有助于突出显示围绕零值的较小变化,同时容纳较大值,而不会使表示出现偏差。

Plot with Symmetrical Logarithmic Scale

在此图中,我们使用 plt.yscale('symlog', linthresh=0.01) 在 y 轴上创建对称对数比例尺。

import matplotlib.pyplot as plt
import numpy as np
# Generating data for a sine wave with values around zero
x = np.linspace(-10, 10, 500)
y = np.sin(x)
# Creating a plot with a symmetrical logarithmic scale for the y-axis
plt.plot(x, y)
# Set symmetrical logarithmic scale for the y-axis
plt.yscale('symlog', linthresh=0.01)
plt.xlabel('X-axis')
plt.ylabel('Y-axis (symlog scale)')
plt.title('Symmetrical Logarithmic Scale')
plt.show()
symmetric log

在 Matplotlib 中使用对称对数比例尺可以让可视化数据集包含在零值周围,通过启用对称分布数据的有效表示和分析。调整线性阈值 (linthresh) 参数至关重要,以确定比例尺呈线性行为时的零值周围的范围,然后转换为对数比例尺。

Logit Scale

Logit scale 是一种专门类型的比例尺,用于表示轴上值限制在 0 和 1 之间的数据。它专门设计用于此范围内的数据,通常在概率或表示概率的值中遇到。

Setting the Scale

plt.xscale()plt.yscale() 函数可以分别用于设置 x 轴和 y 轴的比例尺。

Characteristics of Logit Scale

以下是 Logit 比例尺的特征。

  1. Constrains Data − 专门用于界于 0 和 1 之间的数据。

  2. Transformation − 利用 logit 函数从标准 logistic 分布映射值。

When to Use Logit Scale

Probability Data - 适用于可视化概率或表示概率的值,尤其是在处理逻辑斯蒂回归或逻辑模型时。

Data within 0 to 1 Range - 专门针对在 0 至 1 区间内有界的数据设计。

Importance of Logit Scale

  1. Logit 标度有助于可视化和分析表示概率或具有概率解释的数据。

  2. 它还有助于理解和可视化与概率相关数据的转换。

Plot with the Logit Scale

在此绘图中,我们在 x 轴和 y 轴上创建 Logit 标度。

import matplotlib.pyplot as plt
import numpy as np
# Generating data within the 0 to 1 range
x = np.linspace(0.001, 0.999, 100)
y = np.log(x / (1 - x))
# Creating a plot with a logit scale for the x-axis
plt.plot(x, y)
plt.xscale('logit')  # Set logit scale for the x-axis
plt.xlabel('X-axis (logit scale)')
plt.ylabel('Y-axis')
plt.title('Logit Scale')
plt.show()
logit scale

理解并为绘图选择合适的标度对于准确表示基础数据并确保在可视化中有效地传达模式和趋势非常重要。

Plot yscale class linear, log, logit and symlog by name in Matplotlib library.

在此绘图中,我们按照名称绘制 yscale 类 linear、log、logit 和 symlog。

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
y = np.random.normal(loc=0.5, scale=0.4, size=1000)
y = y[(y > 0) & (y < 1)]
y.sort()
x = np.arange(len(y))

# linear
plt.subplot(221)
plt.plot(x, y)
plt.yscale('linear')
plt.title('linear')

# log
plt.subplot(222)
plt.plot(x, y)
plt.yscale('log')
plt.title('log')

# symmetric log
plt.subplot(223)
plt.plot(x, y - y.mean())
plt.yscale('symlog', linthresh=0.01)
plt.title('symlog')

# logit
plt.subplot(224)
plt.plot(x, y)
plt.yscale('logit')
plt.title('logit')
plt.show()
yscale class