Matplotlib修补椭圆角度查询

时间:2014-08-06 12:10:11

标签: python matplotlib patch ellipse

我正在使用matplotlib补丁,并尝试以特定角度绘制椭圆。根据下面的代码,我认为我绘制的线应该与椭圆的长轴完全相同(角度以逆时针方向,其中0度是水平的)。

不幸的是,我的声誉不足以发布图片,但如果您运行代码,您可以从图中看到它们似乎没有对齐。 (如果你改变了绘图的大小,你可以使它看起来就像它们一样,但无论你如何拉伸轴,它们肯定仍然应该对齐?)

任何人都可以帮忙解释为什么会这样,以及我如何解决它?

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import math

m = -1.34756097561
c = 337.518292683

angle_rad = np.arctan(m)
angle_deg = angle_rad*(180/math.pi)

major_ax = 5.0
minor_ax = 3.5
center = np.array([133.26666667, 157.93333333])

patch = mpatches.Ellipse(center, major_ax, minor_ax, angle_deg, fc='none', ls='solid', ec='g', lw='3.') 

x = np.arange(131, 137)

fig, ax = plt.subplots()
line1 = plt.plot(x, m*x + c)
ax.add_patch(patch)
ax.set_xlim(130.5, 135.5)
ax.set_ylim(155.5, 160.5)
plt.plot(center[0], center[1], 'go')
plt.show()

1 个答案:

答案 0 :(得分:1)

当你的代码运行时(差不多,lw='3.'中的输入错误应该是lw=3.),我得到:

enter image description here

我做了一个小改动(将纵横比改为1:1),以显示该线与90°角的椭圆相交。

但是在屏幕上,中心点可能看起来并不正确。上面的图像是使用savefig拍摄的,但为了进行比较,屏幕截图完全相同:

enter image description here

中心点不在正确的位置。这是后端的一个功能(bug)。 (在我的情况下,后端是MacOSX,我不知道这是否会对其他后端造成错误。)