Matplotlib转换对象

7个月前 (04-27)
Matplotlib 是一款轻量级的图形转换框架,它通过转换对象轻松地实现了数据坐标系、轴域坐标系、图形坐标系,以及显示坐标系四者之间的相互转换,由于这种转换是 Matplotlib 自动完成的,因此无需考虑其底层原理。

坐标系转换对象

下面对四种坐标系做简单说明,其中ax代表轴域对象的实例;fig代表图形对象的实例。

Matplotlib坐标系和转换对象

坐标系

转换对象

描述

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.text(x,y,"my text") 

通过 Axes 转换对象,我们可以指定文本的位置。使用以下代码,将文本移动在坐标系的中心位置:

axes.text(0.5, 0.5, "middle of graph", transform=axes.transAxes)