2013-08-26 39 views
6

Hãy nói rằng tôi có hai biểu đồ và tôi đặt độ mờ sử dụng các tham số của hist: 'alpha = 0,5'Opacity gây hiểu lầm khi âm mưu hai biểu đồ cùng một lúc với matplotlib

Tôi đã vẽ hai biểu đồ nhưng tôi có được ba màu sắc! Tôi hiểu điều này có ý nghĩa từ quan điểm mờ đục.

Nhưng! Nó làm cho rất khó hiểu để hiển thị một người nào đó một đồ thị của hai điều với ba màu sắc. Tôi có thể chỉ bằng cách nào đó thiết lập thanh nhỏ nhất cho mỗi thùng để được ở phía trước không có độ mờ đục?

Ví dụ đồ thị

enter image description here

+2

Nếu bạn không thực sự muốn có 'alpha <1' hơn là chỉ tìm ra màu của màu mờ trên đầu trang của màu trắng là gì và sử dụng các thanh màu đục. – tacaswell

+2

Bạn nên bao gồm mã bạn đã sử dụng để tạo ra cốt truyện, vì ít người có khả năng viết toàn bộ mã cho bạn hơn là sửa mã hiện tại của bạn. – hooy

+0

Mã bạn đã sử dụng để tạo biểu đồ này là gì? –

Trả lời

8

Cách thông thường vấn đề này được xử lý là để có âm mưu với một số tách nhỏ. Này được thực hiện theo mặc định khi plt.hist được đưa ra nhiều bộ dữ liệu:

import pylab as plt 

x = 200 + 25*plt.randn(1000) 
y = 150 + 25*plt.randn(1000) 
n, bins, patches = plt.hist([x, y]) 

Bạn thay vì để chồng họ (điều này có thể được thực hiện trên sử dụng lập luận histtype='barstacked') nhưng lưu ý rằng thứ tự là không chính xác .

Điều này có thể được cố định bằng cách kiểm tra riêng từng cặp điểm để xem điểm nào lớn hơn và sau đó sử dụng zorder để đặt cái nào đến trước. Để đơn giản tôi đang sử dụng đầu ra của mã trên (ví dụ n là hai mảng xếp chồng lên nhau trong những số điểm trong mỗi bin cho x và y):

n_x = n[0] 
n_y = n[1] 
for i in range(len(n[0])): 
    if n_x[i] > n_y[i]: 
     zorder=1 
    else: 
     zorder=0 
    plt.bar(bins[:-1][i], n_x[i], width=10) 
    plt.bar(bins[:-1][i], n_y[i], width=10, color="g", zorder=zorder) 

Dưới đây là hình ảnh kết quả: enter image description here

Bằng cách thay đổi thứ tự như thế này, hình ảnh trông rất kỳ lạ thực sự, đây có lẽ là lý do tại sao nó không được thực hiện và cần một hack để làm điều đó. Tôi sẽ gắn bó với phương pháp tách nhỏ, bất kỳ ai sử dụng các ô này đều giả sử chúng có cùng giá trị x.

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