旋转椭圆,但轴的比例尺差异很大,会导致变形

问题描述 投票:0回答:1

所以,我试图绘制一些数据,并在其上绘制具有给定均值和协方差的置信椭圆。我对Python还是很陌生,但是我认为它比在Java(计算出这些值所用的Java)中的可视化要容易得多。

我现在遇到的问题是,我无法旋转正在绘制的椭圆而不扭曲它。我不完全确定是否确实如此,但是我认为这是因为轴上的比例大不相同(x从0到6,y从40到100)。我再一次猜测,但是我可以想象旋转不会缩放高度(显然,该高度适合y轴从40到100),因此对于我的短x轴来说太长了。

我的问题:是否有更好的方法或在旋转后缩放椭圆以使其再次适合?由于我对Python的了解并不多,所以我只是遍历了不同的教程,以了解如何快速获得结果。不知道这是否是“正确”的开始方式。但是,我所知道的是,我看到的所有示例都具有类似比例的坐标轴,因此我找不到合适的解决方案。

这只是代码的一部分,实际数据不包括在内,但对于椭圆形来说仍应是可复制粘贴的,这样你们就可以明白我的意思,如果您改变旋转角度(本例中为45 )。

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()
python numpy matplotlib plot
1个回答
0
投票

它工作得很好,您看到的明显失真确实是由于图中X和Y轴的缩放比例不同。例如。尝试使用这些轴限制来查看角度不再“变形”:

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

(并确保绘图窗口也为正方形)

如果此椭圆表示置信度,我怀疑您想重新调整其比例以适合您的任意轴限制,而是可能要设置轴限制以适合您的数据和置信度椭圆...

© www.soinside.com 2019 - 2024. All rights reserved.