如何获取经过变换的matplotlib Polygon的xy属性值
获取Matplotlib变换后多边形的顶点坐标
Matplotlib中调用set_transform()只会设置绘制时的坐标变换规则,不会修改多边形的原始顶点数据(也就是poly.xy属性始终存储初始坐标)。要获取变换后的顶点坐标,需要手动用变换对象对原始xy数据进行转换。
具体方法
1. 获取数据坐标空间中变换后的顶点
如果自定义变换(比如示例中的平移)是在数据坐标空间内进行的,直接用自定义变换对象的transform()方法处理原始xy:
# 用示例中的平移变换t处理原始坐标 transformed_xy_data = t.transform(poly.xy) print(transformed_xy_data)
2. 获取屏幕坐标(像素)中变换后的顶点
如果需要的是最终绘制在画布上的屏幕像素坐标,使用多边形当前的完整变换对象(自定义变换+轴数据变换):
# 获取多边形的完整变换 full_transform = poly.get_transform() # 转换原始坐标为屏幕坐标 transformed_xy_screen = full_transform.transform(poly.xy) print(transformed_xy_screen)
3. 示例执行结果
结合你的代码,执行数据坐标变换后会得到:
array([[ 26.56, -30.63], [ 32.36, -5.01], [ 26.56, -30.63]])
关键说明
Matplotlib的变换系统是非破坏性的:原始数据始终保留,变换仅在渲染阶段生效。因此必须通过变换对象主动转换原始坐标,才能得到变换后的结果。
内容的提问来源于stack exchange,提问作者albar
相关产品推荐
相关产品推荐

