Matplotlib - 刻度定位器



在一般的图形和绘图中,刻度在通过小线段表示 x 和 y 轴的比例尺方面起着至关重要的作用,提供了对相关值的清晰指示。另一方面,刻度定位器定义了这些刻度沿轴线的位置,提供了比例尺的视觉表示。

下图显示了图形上的主刻度和次刻度 -

Input

Matplotlib 中的刻度定位器

Matplotlib 提供了一种通过其刻度定位器来控制轴上刻度位置的机制。matplotlib.ticker 模块包含用于配置刻度定位和格式化的类。这些类包括通用刻度定位器、格式化器和特定于领域的自定义刻度定位器。虽然定位器不知道主刻度或次刻度,但它们由 Axis 类使用以支持主刻度和次刻度的定位和格式化。

不同的刻度定位器

matplotlib 在其 ticker 模块中提供了不同的刻度定位器,允许用户自定义轴上的刻度位置。一些刻度定位器包括 -

  • AutoLocator
  • MaxNLocator
  • LinearLocator
  • LogLocator
  • MultipleLocator
  • FixedLocator
  • IndexLocator
  • NullLocator
  • SymmetricalLogLocator
  • AsinhLocator
  • LogitLocator
  • AutoMinorLocator
  • 定义自定义定位器

基本设置

在深入研究特定的刻度定位器之前,让我们建立一个通用的设置函数来绘制带有刻度的图形。

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.ticker as ticker

def draw_ticks(ax, title):
   # it shows the bottom spine only
   ax.yaxis.set_major_locator(ticker.NullLocator())
   ax.spines[['left', 'right', 'top']].set_visible(False)

   ax.xaxis.set_ticks_position('bottom')
   ax.tick_params(which='major', width=1.00, length=5)
   ax.tick_params(which='minor', width=0.75, length=2.5)
   ax.set_xlim(0, 5)
   ax.set_ylim(0, 1)
   ax.text(0.0, 0.2, title, transform=ax.transAxes,
      fontsize=14, fontname='Monospace', color='tab:blue')

现在,让我们探索每个刻度定位器的运作方式。

自动定位器

AutoLocatorAutoMinorLocator 分别用于自动确定轴上主刻度和次刻度的位置。

示例

此示例演示了如何使用 AutoLocatorAutoMinorLocator 自动处理轴上主刻度和次刻度的位置。

# Auto Locator
fig, ax = plt.subplots(1,1,figsize=(7,1.5), facecolor='#eaffff')
plt.subplots_adjust(bottom=0.3, top=0.6, wspace=0.2, hspace=0.4) 
draw_ticks(ax, title="AutoLocator() and AutoMinorLocator()")
ax.xaxis.set_major_locator(ticker.AutoLocator())
ax.xaxis.set_minor_locator(ticker.AutoMinorLocator())
ax.set_title('Auto Locator and Auto Minor Locator')
plt.show()

输出

Output 1

空定位器

NullLocator 不会在轴上放置任何刻度。

示例

让我们看看以下 NullLocator 的工作示例。

# Null Locator
fig, ax = plt.subplots(1,1,figsize=(7,1.5), facecolor='#eaffff')
plt.subplots_adjust(bottom=0.3, top=0.6, wspace=0.2, hspace=0.4) 
draw_ticks(ax, title="NullLocator()")
ax.xaxis.set_major_locator(ticker.NullLocator())
ax.xaxis.set_minor_locator(ticker.NullLocator())
ax.set_title('Null Locator (No ticks)')
plt.show()

输出

Output 2

多重定位器

MultipleLocator() 类允许刻度位于指定基数的倍数处,支持整数和浮点值。

示例

以下示例演示了如何使用 MultipleLocator() 类。

# Multiple Locator
fig, ax = plt.subplots(1,1,figsize=(7,1.5), facecolor='#eaffff')
plt.subplots_adjust(bottom=0.3, top=0.6, wspace=0.2, hspace=0.4) 
draw_ticks(ax, title="MultipleLocator(0.5)")
ax.xaxis.set_major_locator(ticker.MultipleLocator(0.5))
ax.xaxis.set_minor_locator(ticker.MultipleLocator(0.1))
ax.set_title('Multiple Locator')
plt.show()

输出

Output 3

固定定位器

FixedLocator() 在指定固定的位置放置刻度。

示例

这是一个使用 FixedLocator() 类的示例。

# Fixed Locator
fig, ax = plt.subplots(1,1,figsize=(7,1.5), facecolor='#eaffff')
plt.subplots_adjust(bottom=0.3, top=0.6, wspace=0.2, hspace=0.4) 
draw_ticks(ax, title="FixedLocator([0, 1, 3, 5])")
ax.xaxis.set_major_locator(ticker.FixedLocator([0, 1, 3, 5]))
ax.xaxis.set_minor_locator(ticker.FixedLocator(np.linspace(0.2, 0.8, 4)))
ax.set_title('Fixed Locator')
plt.show()

输出

Output 4

线性定位器

LinearLocator 在指定的最小值和最大值之间均匀地间隔刻度。

示例

这是一个将线性定位器应用于轴的主刻度和次刻度的示例。

# Linear Locator
fig, ax = plt.subplots(1,1,figsize=(7,1.5), facecolor='#eaffff')
plt.subplots_adjust(bottom=0.3, top=0.6, wspace=0.2, hspace=0.4) 
draw_ticks(ax, title="LinearLocator(numticks=3)")
ax.xaxis.set_major_locator(ticker.LinearLocator(3))
ax.xaxis.set_minor_locator(ticker.LinearLocator(10))
ax.set_title('Linear Locator')
plt.show()

输出

Output 5

索引定位器

此定位器适用于索引图,其中 x = range(len(y))。

示例

这是一个使用索引定位器 (ticker.IndexLocator() 类) 的示例。

# Index Locator
fig, ax = plt.subplots(1,1,figsize=(7,1.5), facecolor='#eaffff')
plt.subplots_adjust(bottom=0.3, top=0.6, wspace=0.2, hspace=0.4) 
draw_ticks(ax, title="IndexLocator(base=0.5, offset=0.25)")
ax.plot([0]*5, color='white')
ax.xaxis.set_major_locator(ticker.IndexLocator(base=0.5, offset=0.25))
ax.set_title('Index Locator')
plt.show()

输出

Output 6

MaxN 定位器

MaxNLocator 找到最多一定数量的具有良好位置刻度的区间。

示例

这是一个使用 MaxNLocator() 类对主刻度和次刻度进行操作的示例。

# MaxN Locator
fig, ax = plt.subplots(1,1,figsize=(7,1.5), facecolor='#eaffff')
plt.subplots_adjust(bottom=0.3, top=0.6, wspace=0.2, hspace=0.4) 
draw_ticks(ax, title="MaxNLocator(n=4)")
ax.xaxis.set_major_locator(ticker.MaxNLocator(4))
ax.xaxis.set_minor_locator(ticker.MaxNLocator(40))
ax.set_title('MaxN Locator')
plt.show()

输出

Output 7

对数定位器

LogLocator 用于从 min 到 max 对数地间隔刻度。

示例

让我们看看使用对数定位器的示例。它显示了对数刻度上的次刻度标签。

# Log Locator
fig, ax = plt.subplots(1,1,figsize=(7,1.5), facecolor='#eaffff')
plt.subplots_adjust(bottom=0.3, top=0.6, wspace=0.2, hspace=0.4) 
draw_ticks(ax, title="LogLocator(base=10, numticks=15)")
ax.set_xlim(10**3, 10**10)
ax.set_xscale('log')
ax.xaxis.set_major_locator(ticker.LogLocator(base=10, numticks=15))
ax.set_title('Log Locator')
plt.show()

输出

Output 8
广告