Matplotlib面片椭圆角查询椭圆、Matplotlib

2023-09-03 12:21:07 作者:你不必谁懂我

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

不幸的是,我的声誉不足以发布图像,但如果运行代码,您可以从图中看到它们似乎不一致。(如果您更改绘图的大小,您可以使其看起来几乎是这样,但无论您如何拉伸轴,它们肯定都应该对齐?)

在平面直角坐标系xOy中,已知椭圆C

有人能解释一下为什么会这样吗?我怎样才能补救它?

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()

推荐答案

当您的代码运行时(几乎,lw='3.'中有一个输入错误,应该是lw=3.),我得到:

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

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

中心点位置不正确。这是后台的一个功能(BUG)。(在我的例子中,后端是MacOSX,我不知道这是否会影响其他后端。)