来自python中xy数据的等高线图

时间:2018-06-12 08:40:54

标签: python python-3.x matplotlib contour

我想绘制2D数据(xy)的轮廓线,代表数据的68%,95%,99.7%。我的问题几乎与this question相似,但我没有Z轴值。有没有可能在python中做到这一点?。

编辑:从参考问题,我已经为我的问题应用了相同的代码。 (这是半码)

from scipy.stats import gaussian_kde
import matplotlib.pyplot as plt
import numpy as np

x = X_data
y = Y_data

k = gaussian_kde(np.vstack([X_data, Y_data]))
xi, yi = np.mgrid[x.min():x.max():x.size**0.5*1j,y.min():y.max():y.size**0.5*1j]
zi = k(np.vstack([xi.flatten(), yi.flatten()]))

#set zi to 0-1 scale
zi = (zi-zi.min())/(zi.max() - zi.min())
zi =zi.reshape(xi.shape)
plt.plot(X_data, Y_data, 'bo', ms =1)
#set up plot
origin = 'lower'
levels = [0,0.1,0.25,0.5,0.68, 0.95, 0.975,1]

CS = plt.contour(xi, yi, zi,levels = levels,
          colors=('k',),
          linewidths=(3,),
          origin=origin)

plt.clabel(CS, fmt='%.3f', colors='b', fontsize=8)
plt.xlabel(r'$X_{data} [V]$', fontsize=fontall)
plt.ylabel(r'$Y_{data} [A]$', fontsize=fontall)
plt.ticklabel_format(axis='y', style='sci', scilimits=(0,0))
plt.show()

我得到了这个数字:
Output

我想知道这是正确的结果吗?我希望看到轮廓水平代表我数据的68%,95%和99.7%。

0 个答案:

没有答案