0

我需要绘制两个重叠的椭圆,当前代码将第二个椭圆的边缘放在第一个椭圆的顶部。这是代码:

from matplotlib.pyplot import figure, show
from matplotlib import patches
fig = figure()
ax = fig.add_subplot(111)
ell = patches.Ellipse((0.15, 0.7), .3, .1, angle = 25, facecolor = 'white', edgecolor = 'gray', linewidth = 2, transform=ax.transAxes)
ax.add_artist(ell)
ell = patches.Ellipse((0.30, 0.7), .3, .1, angle = -25, facecolor = 'white', edgecolor = 'gray', linewidth = 2, transform=ax.transAxes)
ax.add_artist(ell)
show()

这会产生一个像如何加入重叠圆圈中的第一个图一样的图?(我不能在这里发布我自己的数字)而我想要第二个数字。

matplotlib 中是否有解决此问题的方法?

4

1 回答 1

0

是的。但是您需要使用http://matplotlib.org/1.1.1/api/artist_api.html?highlight=arc#matplotlib.patches.Arc,因为 Ellipse 没有所需的角度参数theta1theta2.

至于实际计算这些角度,椭圆的封闭形式解决方案可能比参考问题中给出的圆方程更复杂。如果您无法找到几何解,您可能不得不求助于数值近似来找到它们:编写一个距离函数 f(ta, tb),计算椭圆 A 上的点 ta 和椭圆 B 上的点 tb 之间的距离,然后搜索两个局部最小值 f(ta1, tb1) 和 f(ta2, tb2)。

于 2012-09-24T12:13:02.277 回答