2013-04-05 31 views
11

pyplot.hist() tài liệu chỉ định rằng khi đặt phạm vi cho biểu đồ "các ngoại lệ phía trên và dưới được bỏ qua".Làm cho pyplot.hist() thùng đầu tiên và cuối cùng bao gồm các ngoại lệ

Có thể làm cho thùng đầu tiên và cuối cùng của biểu đồ bao gồm tất cả các ngoại lệ mà không thay đổi chiều rộng của thùng? Ví dụ, giả sử tôi muốn xem phạm vi 0-3 với 3 thùng: 0-1, 1-2, 2-3 (hãy bỏ qua các trường hợp bình đẳng chính xác để đơn giản). Tôi muốn thùng đầu tiên bao gồm tất cả các giá trị từ âm vô cực đến 1 và thùng cuối cùng bao gồm tất cả các giá trị từ 2 đến vô cùng. Tuy nhiên, nếu tôi đặt rõ ràng những thùng này để mở rộng phạm vi đó, chúng sẽ rất rộng. Tôi muốn họ có cùng chiều rộng. Hành vi tôi đang tìm kiếm giống như hành vi của hist() trong Matlab.

Rõ ràng tôi có thể numpy.clip() dữ liệu và âm mưu, điều này sẽ cho tôi những gì tôi muốn. Nhưng tôi quan tâm nếu có một giải pháp tích hợp cho việc này.

+4

Có vẻ như bạn có giải pháp hai dòng ('numpy.clip(); pyplot.hist()') và bạn muốn có một lớp lót. Trong khi tôi đoán một từ khóa 'clip' để' hist() 'sẽ được tốt đẹp, tôi nghĩ rằng không ai có bận tâm để thực hiện điều này bởi vì nó rất cơ bản. Tất nhiên, bạn luôn có thể gửi một bản vá cho matplotlib :-). – Evert

+1

Vâng, @Evert đúng, clip là giải pháp tốt nhất. Tôi sẽ nói rằng 'pyplot.hist()' không xây dựng điều này trong có lẽ bởi vì nó tạo ra các âm mưu gây nhầm lẫn nếu không được chú thích cẩn thận. – askewchan

+0

@Evert ok, cảm ơn. Tôi chỉ muốn thấy rằng tôi không thiếu một số giải pháp tốt hơn để có được hành vi này. – Bitwise

Trả lời

6

No. Nhìn vào matplotlib.axes.Axes.hist và sử dụng trực tiếp numpy.histogram Tôi khá tự tin khi nói rằng không có giải pháp thông minh hơn so với sử dụng clip (ngoài việc mở rộng các thùng mà bạn vẽ biểu đồ).

tôi khuyến khích bạn nhìn vào nguồn gốc của matplotlib.axes.Axes.hist (nó chỉ là Python mã, mặc dù hist thừa nhận là hơi phức tạp hơn so với hầu hết các phương pháp Axes) - đó là cách tốt nhất để xác minh loại câu hỏi .

HTH

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