七、坐标变换
matplotlib
中有四个坐标系:- 用户级的
data
坐标系:坐标转换对象为ax.transData
。它是用户级坐标系,由xlim
和ylim
控制 Axes
坐标系:坐标转换对象为ax.transAxes
。它是Axes
的坐标系,(0,0)
为Axes
的左下角,(1,1)
为Axes
的右上角。Figure
坐标系:坐标转换对象为fig.transFigure
。它是Figure
的坐标系,(0,0)
为Figure
的左下角,(1,1)
为Figure
的右上角。display
坐标系:它没有坐标转换对象。它显示的是display
的像素坐标系,(0,0)
为display
的左下角,(width,height)
为display
的右上角。
前面三个坐标系的坐标转换对象有方法执行坐标转换,这些方法接受输入并产生输出:输入为本坐标系内的坐标点,输出为
display
坐标系中的坐标。(因此display
坐标系没有坐标转换对象)。当然他们也有相关方法将来自于display
坐标系中的坐标转换回本坐标系内的坐标。- 用户级的
在
Artist
的构造函数中传入transform
关键字参数(其值为坐标转换对象),就能够切换坐标系。如:ax.text(0.05,0.95,label,"This is a Text",transform=ax.transAxes)
,将Text
放置于Axes
坐标系中的(0.05,0.95)
位置处。通常不建议直接使用
display
坐标系。因为它固定了绝对坐标,导致你resize
图表时你必须重新定位坐标。所以你必须监听resize
事件,非常麻烦。