7

matplotlib.pyplot.contour を使用してデータのグリッドに等高線 (実行可能) をプロットしようとしていますが、等高線はピーク値から 1、2、および 3 シグマ離れて配置されています。ブルートフォースとは別に、これを行うためのきちんとした方法はありますか? ありがとう!

パイソンのバージョンは

Python 2.7.2 |EPD 7.2-2 (64 ビット)| (デフォルト、2011 年 9 月 7 日 16:31:15) [GCC 4.0.1 (Apple Inc. ビルド 5493)] ダーウィン

4

1 に答える 1

6

z-values等高線を描画する場所のリストを指定できます。z-valuesしたがって、ディストリビューションに適したものを収集するだけです。「ピーク値から 1、2、および 3 シグマ」の例を次に示します。

ここに画像の説明を入力

コード:

import numpy as np
import matplotlib.cm as cm
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

#Set up the 2D Gaussian:
delta = 0.025
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-3.0, 3.0, delta)
X, Y = np.meshgrid(x, y)
sigma = 1.0
Z = mlab.bivariate_normal(X, Y, sigma, sigma, 0.0, 0.0)
#Get Z values for contours 1, 2, and 3 sigma away from peak:
z1 = mlab.bivariate_normal(0, 1 * sigma, sigma, sigma, 0.0, 0.0)
z2 = mlab.bivariate_normal(0, 2 * sigma, sigma, sigma, 0.0, 0.0)
z3 = mlab.bivariate_normal(0, 3 * sigma, sigma, sigma, 0.0, 0.0)

plt.figure()
#plot Gaussian:
im = plt.imshow(Z, interpolation='bilinear', origin='lower',
                 extent=(-50,50,-50,50),cmap=cm.gray)
#Plot contours at whatever z values we want:
CS = plt.contour(Z, [z1, z2, z3], origin='lower', extent=(-50,50,-50,50),colors='red')
plt.savefig('fig.png')
plt.show()
于 2012-06-09T23:33:14.193 に答える