Matplotlib 中 5 套核心坐标系统的原理与应用
在 Python 数据可视化库 Matplotlib 中,理解坐标系统(Transforms)是掌握高级绘图技巧的关键。许多开发者在使用 plt.text、ax.annotate 或自定义图形元素时,常因混淆不同坐标系而导致位置偏移或缩放异常。本文将深入解析 Matplotlib 中的五大坐标系统,通过代码示例与原理说明,帮助读者彻底理清各类坐标的转换逻辑。
1. 显示空间 (Display Space)
单位:像素 (px)
这是最底层的坐标系统,所有其他坐标最终都会被转换为显示空间才能在屏幕上渲染。它对应于图像的实际像素尺寸。
核心概念
- DPI (Dots Per Inch):决定英寸与像素的转换比例。默认通常为 100 DPI。
- Window Extent:获取图形或坐标轴在屏幕上的实际像素边界。
代码示例
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots(figsize=(5, 6), facecolor='skyblue')
ax.set_facecolor('orange')
# 获取 Figure 的窗口范围(像素)
box_fig = fig.get_window_extent()
print(f"Figure 宽/高 (px): {box_fig.width}, {box_fig.height}")
print(f"Figure 起点 (x0, y0): {box_fig.x0}, {box_fig.y0}")
# 获取 Axes 的窗口范围(像素)
box_ax = ax.get_window_extent()
print(f"Axes 宽/高 (px): {box_ax.width}, {box_ax.height}")
print(f"Axes 起点 (x0, y0): {box_ax.x0}, {box_ax.y0}")
# 验证 DPI 转换
print(f"DPI: {fig.dpi}")
print(f"5x6 英寸转像素:{fig.dpi_scale_trans.transform((5, ))}")


