Matplotlib 是一款轻量级的图形转换框架,它通过转换对象轻松地实现了数据坐标系、轴域坐标系、图形坐标系,以及显示坐标系四者之间的相互转换,由于这种转换是 Matplotlib 自动完成的,因此无需考虑其底层原理。
下面对四种坐标系做简单说明,其中ax代表轴域对象的实例;fig代表图形对象的实例。
坐标系 | 转换对象 | 描述 |
---|---|---|
Data | ax.transData | 数据坐标系,由 xlim 和 ylim 控制。 |
Axes | ax.transAxes | 轴域坐标系(即绘图区坐标系),(0,0) 在轴域坐标系左下角,(1,1)在轴域坐标系的右上角。 |
Figure | fig.transFigure | 图形坐标系。(0,0) 在图的左下角,(1,1) 在图的右上角。 |
Display | None | 显示坐标系。(0,0)显示左下角,而(width,height) 则显示右上角。注意,此处以像素 px 为单位。 |
转换对象作用就是在不同对象之间架起一座沟通的桥梁。输入一组数据最终以图像的形式显示,这个过程就是依靠转换对象来实现的。
上表中的 Data、Axes、Figure,这三个转换对象都可以接受一组数据,它们会将接受的数据转换到显示坐标系中,即 Display。在这个过程中,显示坐标系只是充当数据的接收者,因此显示坐标系不存在转换对象。
下面举一个简单的示例,现有文本“my text”放置在数据点 (x,y) 位置处:
通过 Axes 转换对象,我们可以指定文本的位置。使用以下代码,将文本移动至在坐标系的中心位置: