如何绘制均值为0的协方差误差椭圆?

时间:2019-02-05 01:55:24

标签: python numpy matplotlib

我正在尝试绘制不确定性椭圆,这是与平均值相差一个标准偏差的点的椭圆。 我正在使用此代码执行此操作:https://stackoverflow.com/a/25022642/7448860

但是,它不是椭圆,而是画一条线。

我正在绘制2个随机变量(x,y),所以协方差矩阵的大小为2 x2。要计算协方差矩阵,我使用的是Kalman滤波算法,因此不需要使用np.cov ()。

代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse

def eigsorted(cov):
    vals, vecs = np.linalg.eigh(cov)
    order = vals.argsort()[::-1]

    return vals[order], vecs[:,order]

x = [0]
y = [0]
cov = [[0.25, 0.5 ], [0.5, 1.]]

nstd = 1
ax = plt.subplot(111)

vals, vecs = eigsorted(cov)

theta = np.degrees(np.arctan2(*vecs[:,0][::-1]))
w, h = 2 * nstd * np.sqrt(vals)
ell = Ellipse(xy=(np.mean(x), np.mean(y)),
              width=w, height=h,
              angle=theta, color='black')

ell.set_facecolor('none')
ax.add_artist(ell)
plt.scatter(x, y)
plt.show()

输出: enter image description here

如何绘制远离均值的椭圆标准差?

我尝试过:

x = [0,1,0,1]
y = [0,0,1,1]

但是,它绘制: enter image description here

0 个答案:

没有答案