Matplotlib 坐标轴配置函数


Matplotlib 参考文档 Matplotlib 参考文档

这组函数用于控制坐标轴的范围、比例、刻度、网格线和外观。

函数一览

函数功能
xlim() / ylim()获取或设置 x/y 轴范围
xscale() / yscale()设置 x/y 轴比例:'linear'、'log'、'symlog'、'logit'
xticks() / yticks()获取或设置 x/y 轴刻度位置和标签
tick_params()调整刻度外观参数
ticklabel_format()设置刻度标签格式(科学计数法等)
locator_params()控制刻度定位器参数
minorticks_on() / minorticks_off()显示/隐藏次要刻度
rgrids()设置极坐标图径向网格线
thetagrids()设置极坐标图角度网格线
grid()开启或关闭网格线
axis()便捷设置轴范围和外观
box()开关 Axes 边框线
autoscale()自动缩放坐标轴

xlim() / ylim() - 轴范围

matplotlib.pyplot.xlim(*args, **kwargs)  # 获取或设置
matplotlib.pyplot.ylim(*args, **kwargs)

xscale() / yscale() - 轴比例

matplotlib.pyplot.xscale(value, **kwargs)
matplotlib.pyplot.yscale(value, **kwargs)
# value: 'linear', 'log', 'symlog', 'logit', 'function', 'asinh', ...

xticks() / yticks() - 刻度

matplotlib.pyplot.xticks(ticks=None, labels=None, **kwargs)
matplotlib.pyplot.yticks(ticks=None, labels=None, **kwargs)

tick_params() - 刻度外观

matplotlib.pyplot.tick_params(axis='both', **kwargs)
# 常用参数: labelsize, labelcolor, rotation, direction, length, width, colors

ticklabel_format() - 刻度格式

matplotlib.pyplot.ticklabel_format(*, axis='both', style='',
    scilimits=None, useOffset=None, useLocale=None, useMathText=None)

grid() - 网格线

matplotlib.pyplot.grid(visible=None, which='major', axis='both',
    **kwargs)

axis() - 轴外观便捷函数

matplotlib.pyplot.axis(*args, **kwargs)
# 可接受字符串: 'on', 'off', 'equal', 'scaled', 'tight', 'auto', 'square'
# 可接受列表: [xmin, xmax, ymin, ymax]

box() - 边框线

matplotlib.pyplot.box(on=None)

autoscale() - 自动缩放

matplotlib.pyplot.autoscale(enable=True, axis='both', tight=None)

locator_params() / minorticks

matplotlib.pyplot.locator_params(axis='both', tight=None, **kwargs)
matplotlib.pyplot.minorticks_on()
matplotlib.pyplot.minorticks_off()

使用示例

示例 1:综合坐标轴配置

实例

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0.1, 100, 200)
y = x**2

fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(14, 4),
                                     layout='constrained')

# 左图:线性坐标 + 自定义刻度和网格
ax1.plot(x, y, 'steelblue')
ax1.set_xlim(0, 100)
ax1.set_ylim(0, 10000)
ax1.set_xticks([0, 25, 50, 75, 100])
ax1.set_yticks([0, 2500, 5000, 7500, 10000])
ax1.grid(True, linestyle='--', alpha=0.4)
ax1.set_title('Linear: custom ticks')

# 中图:对数坐标
ax2.loglog(x, y, 'coral')
ax2.grid(True, which='both', linestyle=':', alpha=0.4)
ax2.set_title('loglog()')

# 右图:科学计数法
ax3.plot(x, y, 'green')
ax3.ticklabel_format(style='sci', axis='y',
                      scilimits=(0, 0))
ax3.minorticks_on()
ax3.grid(True, which='major', alpha=0.5)
ax3.grid(True, which='minor', alpha=0.15)
ax3.set_title('Scientific notation + minor ticks')

plt.show()

示例 2:tick_params 详细配置

实例

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x)

fig, ax = plt.subplots(figsize=(8, 4), layout='constrained')
ax.plot(x, y, 'steelblue', linewidth=2)

# 详细配置刻度外观
ax.tick_params(axis='x',              # 仅 x 轴
               rotation=45,           # 旋转标签 45 度
               labelsize=10,          # 标签大小
               labelcolor='blue',     # 标签颜色
               direction='in',        # 刻度向内
               length=6,              # 刻度长度
               width=1.5)             # 刻度宽度

ax.tick_params(axis='y',
               labelsize=12,
               labelcolor='red',
               direction='inout',     # 内外都有刻度
               length=8,
               width=2,
               colors='red')          # 刻度和标签都用红色

ax.set_title('tick_params() Customization')
ax.grid(True, alpha=0.3)
plt.show()

示例 3:axis() 和 box()

实例

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-5, 5, 100)

fig, axes = plt.subplots(2, 2, figsize=(8, 8),
                          layout='constrained')

# 'equal':x 和 y 单位长度相等
axes[0,0].plot(x, np.sin(x))
axes[0,0].axis('equal')
axes[0,0].set_title("axis('equal')")

# 'square':方形 Axes
axes[0,1].plot(x, np.cos(x))
axes[0,1].axis('square')
axes[0,1].set_title("axis('square')")

# 'tight':紧贴数据
axes[1,0].plot(x, x**2)
axes[1,0].axis('tight')
axes[1,0].set_title("axis('tight')")

# box(False) 去掉边框
axes[1,1].plot(x, np.sin(x))
axes[1,1].box(False)
axes[1,1].set_title('box(False) - No frame')

plt.show()
print("runoob: axis config demo")

Matplotlib 参考文档 Matplotlib 参考文档