2012-06-09 45 views
6

Tôi đang cố gắng vẽ đường nét (có thể thực hiện) trên một mạng lưới dữ liệu bằng cách sử dụng matplotlib.pyplot.contour, nhưng với các đường viền được đặt ở 1, 2 và 3 sigma cách xa giá trị đỉnh . Có cách nào gọn gàng để làm điều này ngoài sức mạnh vũ phu? Cảm ơn!python matplotlib - đường viền - khoảng tin cậy

Phiên bản Python là

Python 2.7.2 | EPD 7.2-2 (64-bit) | (mặc định, ngày 7 tháng 9 năm 2011, 16:31:15) [GCC 4.0.1 (Apple Inc. xây dựng 5493)] trên darwin

Trả lời

4

Bạn có thể chỉ định danh sách z-values nơi đường bao được vẽ. Vì vậy, tất cả những gì bạn phải làm là thu thập chính xác z-values cho bản phân phối của bạn. Dưới đây là một ví dụ cho '1, 2, và 3 sigma ra khỏi giá trị đỉnh':

enter image description here

Code:

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() 
Các vấn đề liên quan