2012-01-27 20 views

Trả lời

10

Chỉ cần tính và chuẩn hóa nó theo bất kỳ giá trị nào bạn muốn, sau đó sử dụng bar để vẽ biểu đồ.

Lưu ý phụ, điều này sẽ bình thường hóa những thứ sao cho khu vực của tất cả các thanh là normed_value. Tổng số tiền sẽ là không phảinormed_value (mặc dù dễ dàng xảy ra trường hợp đó nếu bạn muốn).

Ví dụ:

import numpy as np 
import matplotlib.pyplot as plt 

x = np.random.random(100) 
normed_value = 2 

hist, bins = np.histogram(x, bins=20, density=True) 
widths = np.diff(bins) 
hist *= normed_value 

plt.bar(bins[:-1], hist, widths) 
plt.show() 

enter image description here

Vì vậy, trong trường hợp này, nếu chúng ta tích hợp (tổng chiều cao nhân với chiều rộng) các thùng, chúng tôi sẽ nhận được 2.0 thay vì 1.0. (ví dụ: (hist * widths).sum() sẽ mang lại 2.0)

8

Bạn có thể chuyển đối số weights tới hist thay vì sử dụng normed. Ví dụ, nếu thùng của bạn bao gồm khoảng [minval, maxval], bạn có n thùng, và bạn muốn bình thường hóa khu vực để A, sau đó tôi nghĩ

weights = np.empty_like(x) 
weights.fill(A * n/(maxval-minval)/x.size) 
plt.hist(x, bins=n, range=(minval, maxval), weights=weights) 

nên làm các trick.

EDIT: Đối số weights phải có cùng kích thước như x, và ảnh hưởng của nó là làm cho mỗi giá trị trong x đóng góp giá trị tương ứng trong weights về phía đếm bin, thay vì 1.

Tôi nghĩ rằng hist Tuy nhiên, chức năng có thể làm với khả năng kiểm soát bình thường cao hơn. Ví dụ, tôi nghĩ như nó đứng, giá trị bên ngoài phạm vi binned được bỏ qua khi bình thường hóa, mà thường không phải là những gì bạn muốn.

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