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()
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()
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")
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 参考文档
点我分享笔记