我正在使用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()
答案 0 :(得分:1)
当你的代码运行时(差不多,lw='3.'
中的输入错误应该是lw=3.
),我得到:
我做了一个小改动(将纵横比改为1:1),以显示该线与90°角的椭圆相交。
但是在屏幕上,中心点可能看起来并不正确。上面的图像是使用savefig
拍摄的,但为了进行比较,屏幕截图完全相同:
中心点不在正确的位置。这是后端的一个功能(bug)。 (在我的情况下,后端是MacOSX,我不知道这是否会对其他后端造成错误。)