15分钟
坐标变换
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坐标系中的坐标转换回本坐标系内的坐标。- 用户级的
2. 在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事件,非常麻烦。
学员评价