Python 旋转一个椭圆,但轴的尺度大不相同,这会导致变形

Python 旋转一个椭圆,但轴的尺度大不相同,这会导致变形,python,numpy,matplotlib,plot,Python,Numpy,Matplotlib,Plot,所以,我试着绘制一些数据,画一个置信椭圆,上面有一个给定的均值和协方差。我对Python非常陌生,但我认为将其可视化要比在Java中容易得多(在Java中我计算了使用的这些值) 我现在的问题是,我无法旋转我正在绘制的椭圆而不扭曲它。我不完全确定这是否真的是这样,但我认为这是因为轴上的比例差异很大(x从0到6,y从40到100)。再一次我在猜测,但是我可以想象旋转没有缩放高度(设置为适合y轴从40到100),所以对于我的短x轴来说它太长了 我的问题是:有没有更好的方法来实现这一点,或者在旋转后缩放

所以,我试着绘制一些数据,画一个置信椭圆,上面有一个给定的均值和协方差。我对Python非常陌生,但我认为将其可视化要比在Java中容易得多(在Java中我计算了使用的这些值)

我现在的问题是,我无法旋转我正在绘制的椭圆而不扭曲它。我不完全确定这是否真的是这样,但我认为这是因为轴上的比例差异很大(x从0到6,y从40到100)。再一次我在猜测,但是我可以想象旋转没有缩放高度(设置为适合y轴从40到100),所以对于我的短x轴来说它太长了

我的问题是:有没有更好的方法来实现这一点,或者在旋转后缩放椭圆,使其再次适合?因为我对Python的了解不多,所以我只是浏览了不同的教程,看看是什么让我很快得到了结果。不确定这是否是一开始的“正确”方式。然而,我所知道的是,我所看到的所有示例都具有类似的缩放轴,因此我无法找到解决问题的适当方法

这只是代码的一部分,实际数据不包括在内,但它仍然可以复制粘贴椭圆,这样你们就可以看到我的意思,如果你改变旋转角度(在本例中为45)


它工作得非常好,你看到的明显失真确实是因为你的X轴和Y轴在绘图中的不同比例。 例如,尝试使用这些轴限制,以确保角度不再“扭曲”:

(并确保打印窗口也是方形的)


如果此椭圆表示置信度,我怀疑您是否希望重新缩放它以适应任意轴限制,相反,您可能希望设置轴限制以适应数据和置信度椭圆…

谢谢您的回答。然而,选择轴限制当然是为了适合数据。如果我改变极限,数据点将被扭曲成一条基本的直线,因为如果标度膨胀到-20-20,小的x差(0-6)不会真正显示出来。您知道我是否可以手动设置轴刻度吗?所以我可以把我所有的y数据除以10,这将把它们和我的x数据放在同一个范围内。如果我可以改变刻度,我基本上可以说“显示值,但x10”,所以它看起来像是旧的刻度,但在内部它仍然使用数据除以10。
import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse

meanX = 2.0374
meanY = 54.4897
secondLongest = 0.0700
longest = 33.7679

ax = plt.subplot(111)

plt.axis([0, 6, 40, 100])
#plt.plot(duration, waitperiod, "rx")
plt.xlabel("Duration")
plt.ylabel("Time between eruptions")

#if rotation is set to 0, it works perfectly fine but I want a different angle
ellipse = Ellipse((meanX, meanY), 2*np.sqrt(5.991*secondLongest), 2*np.sqrt(5.991*longest), 45)

ax.add_artist(ellipse)

plt.show()
plt.axis([-20, 20, 40, 80])