2016-01-27 16 views
6

Tôi đã thử tìm kiếm thứ gì đó tương tự, và điều gần nhất tôi có thể tìm thấy là this giúp tôi trích xuất và thao tác dữ liệu, nhưng bây giờ tôi không thể tìm ra cách để vẽ lại biểu đồ. Tôi có một số điện áp, và trước tiên tôi đã vẽ một biểu đồ các lần xuất hiện của các điện áp đó. Thay vào đó, tôi muốn tạo biểu đồ các sự kiện mỗi giờ (do đó trục y của biểu đồ bình thường chia cho số giờ tôi lấy dữ liệu) và sau đó vẽ lại biểu đồ bằng các dữ liệu y được xử lý.Biểu đồ Python: Chuẩn hóa số lượng bình thường và vẽ lại dưới dạng biểu đồ

Tôi có một mảng chứa số sự kiện mỗi giờ (bao gồm trục y gốc từ pyplot.hist chia cho số giờ dữ liệu đã được lấy) và các thùng từ biểu đồ. Tôi đã soạn mảng đó bằng cách sử dụng mã sau (lấy từ câu trả lời được liên kết ở trên):

import numpy 
import matplotlib.pyplot as pyplot 
mydata = numpy.random.normal(-15, 1, 500)  # this seems to have to be 'uneven' on either side of 0, otherwise the code looks fine. FYI, my actual data is all positive 
pyplot.figure(1) 
hist1 = pyplot.hist(mydata, bins=50, alpha=0.5, label='set 1', color='red') 
hist1_flux = [hist1[0]/5.0, 0.5*(hist1[1][1:]+hist1[1][:-1])] 
pyplot.figure(2) 
pyplot.bar(hist1_flux[1], hist1_flux[0]) 

Mã này không khớp chính xác với những gì đang xảy ra trong mã của tôi; dữ liệu của tôi bao gồm 1000 mảng 1000 điểm dữ liệu mỗi (điện áp). Tôi đã thực hiện các biểu đồ về điều đó, điều này mang lại cho tôi số lần xuất hiện của một dải điện áp nhất định (hoặc chiều rộng thùng). Tất cả tôi muốn làm là replot một histogram của số sự kiện mỗi giờ (vì vậy yaxiscủa histogram/5 giờ) với cùng chiều rộng bin gốc, nhưng khi tôi chia hist1[0]/5 và replot trong trên đường đi, 'chiều rộng thùng rác' đều sai.

Tôi cảm thấy phải có cách dễ dàng hơn để thực hiện việc này, thay vì tự thay thế biểu đồ của chính tôi.

Xin cảm ơn trước và tôi thực sự xin lỗi nếu tôi đã bỏ lỡ điều gì đó hiển nhiên.

Vấn đề, minh họa trong đầu ra của mẫu mã và dữ liệu ban đầu của tôi là như sau: đầu ra đoạn mã:

lô Upper.
Các ô phía dưới: Dữ liệu thực tế của tôi. Upper plots: code snippet output. Lower plots: My actual data.

Trả lời

3

Đó là bởi vì bar chức năng có một đối width, mà là theo mặc định 0.8 (plt.bar(left, height, width=0.8, bottom=None, hold=None, **kwargs)), vì vậy bạn cần phải thay đổi nó để khoảng cách giữa hai thanh:

pyplot.bar(hist1_flux[1], hist1_flux[0], 
      width=hist1_flux[1][1] - hist1_flux[1][0]) 
+0

Brilliant, điều này sửa chữa nó một cách hoàn hảo , Tôi biết tôi đã thiếu một cái gì đó nhưng tôi không biết nó là gì. Cảm ơn bạn rất nhiều. Tôi ngạc nhiên không có cách nào dễ dàng hơn để thao tác thủ công tất cả các giá trị y trong pyplot.hist; nó có vẻ giống như một cái gì đó tự nhiên để thêm vào. –

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