我需要绘制两个重叠的椭圆,当前代码将第二个椭圆的边放在第一个椭圆的顶部。这是代码:
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()
这会产生一个像How to join overlapping circles?处的第一个数字(我不能在这里发布我自己的数据),而我想要的是第二个数字。
matplotlib中是否有解决此问题的方法?
答案 0 :(得分:0)
是。但是您需要使用http://matplotlib.org/1.1.1/api/artist_api.html?highlight=arc#matplotlib.patches.Arc,因为Ellipse没有所需的角度参数theta1
和theta2
。
对于实际计算这些角度,椭圆的封闭形式解决方案可能比参考的圆形问题中给出的方程更为复杂。如果几何解决方案没有你,你可能不得不求助于数值近似来找到它们:写一个距离函数f(ta,tb)来计算椭圆A上的点ta和椭圆B上的点tb之间的距离,然后搜索两个局部最小值f(ta1,tb1)和f(ta2,tb2)。