2012-07-03 33 views
9

Tôi đang cố gắng làm một chút phân phối âm mưu và phù hợp trong Python bằng cách sử dụng SciPy cho số liệu thống kê và matplotlib cho âm mưu. Tôi đang gặp may mắn với một số thứ như tạo ra một biểu đồ:python: vẽ biểu đồ với một đường hàm trên đầu trang

seed(2) 
alpha=5 
loc=100 
beta=22 
data=ss.gamma.rvs(alpha,loc=loc,scale=beta,size=5000) 
myHist = hist(data, 100, normed=True) 

enter image description here

Brilliant!

Tôi thậm chí có thể mất các thông số gamma cùng và cốt truyện chức năng dòng của hàm phân bố xác suất (sau khi một số googling):

rv = ss.gamma(5,100,22) 
x = np.linspace(0,600) 
h = plt.plot(x, rv.pdf(x)) 

enter image description here

Làm thế nào tôi sẽ đi về vẽ biểu đồ myHist với dòng PDF h được chồng lên trên biểu đồ? Tôi hy vọng điều này là tầm thường, nhưng tôi đã không thể hình dung ra được.

+1

http://matplotlib.sourceforge.net/examples/api/histogram_demo.html – jfs

+0

Bạn' có thể âm mưu biểu đồ và cốt truyện theo các số liệu khác nhau. Nếu bạn chỉ cần gọi hàm lịch biểu và hàm trên cùng một hình thì 2 nên được chồng lên nhau – Dhara

+0

@Dhara chính xác là nó. Tôi đang sử dụng máy tính xách tay ipython và làm chính xác điều đó. –

Trả lời

10

chỉ cần đặt cả hai phần lại với nhau.

import scipy.stats as ss 
import numpy as np 
import matplotlib.pyplot as plt 
alpha, loc, beta=5, 100, 22 
data=ss.gamma.rvs(alpha,loc=loc,scale=beta,size=5000) 
myHist = plt.hist(data, 100, normed=True) 
rv = ss.gamma(alpha,loc,beta) 
x = np.linspace(0,600) 
h = plt.plot(x, rv.pdf(x), lw=2) 
plt.show() 

enter image description here

để đảm bảo bạn sẽ có được những gì bạn muốn trong bất kỳ trường hợp cốt truyện cụ thể, cố gắng tạo ra một đối tượng figure đầu tiên

import scipy.stats as ss 
import numpy as np 
import matplotlib.pyplot as plt 
# setting up the axes 
fig = plt.figure(figsize=(8,8)) 
ax = fig.add_subplot(111) 
# now plot 
alpha, loc, beta=5, 100, 22 
data=ss.gamma.rvs(alpha,loc=loc,scale=beta,size=5000) 
myHist = ax.hist(data, 100, normed=True) 
rv = ss.gamma(alpha,loc,beta) 
x = np.linspace(0,600) 
h = ax.plot(x, rv.pdf(x), lw=2) 
# show 
plt.show() 
+3

vấn đề tôi đã gặp phải là tôi đang sử dụng sổ ghi chép ipython vì vậy tôi muốn chạy một cốt truyện, nó sẽ âm mưu tương tác sau đó tôi sẽ làm một số công cụ và âm mưu khác, và nó sẽ kết thúc trong một âm mưu mới. Cảm ơn vì đã giúp tôi hình dung điều này! –

2

On có thể quan tâm đến âm mưu thực hiện chức năng distibution của bất kỳ biểu đồ nào. Điều này có thể được thực hiện bằng chức năng sanh ở biển kde

import numpy as np # for random data 
import pandas as pd # for convinience 
import matplotlib.pyplot as plt # for graphics 
import seaborn as sns # for nicer graphics 

v1 = pd.Series(np.random.normal(0,10,1000), name='v1') 
v2 = pd.Series(2*v1 + np.random.normal(60,15,1000), name='v2') 

# plot a kernel density estimation over a stacked barchart 
plt.figure() 
plt.hist([v1, v2], histtype='barstacked', normed=True); 
v3 = np.concatenate((v1,v2)) 
sns.kdeplot(v3); 
plt.show() 

enter image description here từ một khóa học Coursera trên trực quan dữ liệu với python

Các vấn đề liên quan