在matplotlib中包含路径的路径

时间:2018-06-12 21:26:51

标签: python matplotlib path

我正在尝试评估一个圆是否包含在另一个形状中(在这个简单的例子中,我将使用一个正方形)。

import matplotlib.pyplot as plt
from matplotlib.patches import Circle
from matplotlib import path
import matplotlib.patches as patches

c = Circle((0, 0), radius=3)
path_c = c.get_path()
p = path.Path([(-2, -2), (-2, 2), (2, 2), (2, -2), (-2, -2)])

fig = plt.figure()
ax = fig.add_subplot(111)
patch = patches.PathPatch(p, facecolor='orange', lw=2)
patch2 = patches.PathPatch(path_c, facecolor='blue', lw=2)
ax.add_patch(patch)
ax.add_patch(patch2)
ax.set_xlim(-2, 2)
ax.set_ylim(-2, 2)
plt.show()

print(p.contains_path(path_c))

我遇到的问题是无论我输入Circle的是什么,它总是在半径为1的原点处形成一个圆圈。这只是我使用get_path的情况,但这是我可以使用包含的唯一方法。圆形物体上的路径。

关于如何检查圆圈是否包含在另一个形状内的任何想法?

1 个答案:

答案 0 :(得分:0)

圆圈is always a unit circle

的路径
self._path = Path.unit_circle()

在这里你想知道圆被添加到轴后的路径,这样它就可以获得一些单位。

首先,我们需要将圆圈添加到轴

c = Circle((0, 0), radius=3)
ax.add_patch(c)

然后我们可以得到变换后的路径(根据给定的半径和中心进行变换),并检查该变换路径是否包含在另一条路径中。

c_path = c.get_patch_transform().transform_path(c.get_path())
print(p.contains_path(c_path))

如果Falseradius=3Trueradius<2

相关问题