Matplotlib 形状椭圆角度查询
我正在使用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 个回答
1
当你的代码运行时(几乎是这样,不过在lw='3.'
这里有个打字错误,应该是lw=3.
),我得到了:
我只做了一个小改动(把宽高比改成了1:1),这样可以显示出这条线与椭圆的交点是90°的角度。
不过在屏幕上,中心的点可能看起来不太在正确的位置。上面的图片是用savefig
保存的,但为了比较,这里有一张完全相同图的屏幕截图:
中心的点确实不在正确的位置。这是后端的一个特性(或者说是个bug)。(在我的情况下,后端是MacOSX,我不知道这是否会影响其他后端。)