我试图在图上画一个椭圆来表示一个簇。下面的代码绘制了第一张图。它在for循环中,但它并不重要。
native_f1 = [some values here]
native_f2 = [some values here]
ax = plt.subplot(2, 2, index)
ax.scatter(native_f1, native_f2, s=40)
axes = plt.gca()
axes.set_xlim([min(native_f1) - 800, max(native_f1) + 800])
axes.set_ylim([min(native_f2) - 800, max(native_f2) + 800])
现在我想得到这样的东西:
我如何根据我用来绘制这些图形的值来绘制椭圆?谢谢
1条答案
按热度按时间7ivaypg91#
椭圆的方程是$\pm B \sqrt{1 -(x-x 0)^2/a^2} + y 0 $,其中(x 0,y 0)是椭圆的中心。(更多细节见Draw ellipses around points)。
可以通过
x2 = max(native_f1)
、x1 = min(native_f1)
、y2 = max(native_f2)
和y1 = min(native_f2)
找到椭圆的边。中心(x 0,y 0)为
( (x2+x1)/2, (y2+y1)/2 )
。y方向(b)轴的比例为(y2-y1)/2
,x方向(a)轴的比例为(x2-x1)/2
。根据需要使用模糊因子进行调整。你也可以使用matplotlib. patches. Ellipse。