Python Matplotlib patch`get_verts()`在向轴添加面片后发生更改
我想通过使用Python Matplotlib patch`get_verts()`在向轴添加面片后发生更改,python,python-3.x,matplotlib,Python,Python 3.x,Matplotlib,我想通过使用get_verts()函数获取matplotlib.patches.eliple对象的顶点。不幸的是,在将椭圆添加到轴后,顶点已更改。以下是我的代码(Python 3.5): 是否有人了解这一点和/或知道如何获取原始顶点(在将椭圆添加到轴之前)?在打印之前存储原始顶点。绘制面片时,由于轴应用的变换,顶点会发生更改。查看椭圆的get_transform()返回值。这也是我的第一个想法,当然也很管用。我只是想可能有更好的方法。如果你在绘制顶点后使用变换,你需要对它们应用一个逆变换来获得初
get_verts()
函数获取matplotlib.patches.eliple
对象的顶点。不幸的是,在将椭圆添加到轴后,顶点已更改。以下是我的代码(Python 3.5):
是否有人了解这一点和/或知道如何获取原始顶点(在将椭圆添加到轴之前)?在打印之前存储原始顶点。绘制面片时,由于轴应用的变换,顶点会发生更改。查看椭圆的get_transform()
返回值。这也是我的第一个想法,当然也很管用。我只是想可能有更好的方法。如果你在绘制顶点后使用变换,你需要对它们应用一个逆变换来获得初始值。是的,你是对的。其工作原理如下:ax.transData.inversed().transform(e.get_verts())提供原始顶点
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
from matplotlib.patches import Ellipse
fig = Figure()
ax = fig.add_subplot(111, aspect='equal')
e = Ellipse((0,0), 100, 200)
print(e.get_verts())
[[ 0. -100. ]
[ 2.48205003 -99.91768257]
[ 7.38744659 -98.94347052]
...,
[ -7.38744659 -98.94347052]
[ -2.48205003 -99.91768257]
[ 0. -100. ]]
ax.add_patch(e)
print(e.get_verts())
[[ 8.00000000e+01 -3.83520000e+04]
[ 1.57066457e+02 -3.83518765e+04]
[ 3.11115446e+02 -3.83503961e+04]
...,
[ -1.51115446e+02 -3.83503961e+04]
[ 2.93354282e+00 -3.83518765e+04]
[ 8.00000000e+01 -3.83520000e+04]]