Итак, я пытаюсь построить некоторые данные, которые у меня есть, и нарисовать доверительный эллипс с заданным средним значением и ковариацией поверх него. Я очень плохо знаком с Python, но я подумал, что это будет намного проще визуализировать, чем это было бы в Java (где я рассчитал эти значения, использованные).
Проблема, с которой я сейчас сталкиваюсь, заключается в что я просто не могу вращать рисованный эллипс, не искажая его. Я не совсем уверен, так ли это на самом деле, но я думаю, что это из-за совершенно разных масштабов на осях (х от 0 до 6, у от 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()