2014-10-06 20 views
5

Điều này tương tự như Matlab: Combine the legends of shaded error and solid line mean, ngoại trừ Matplotlib. mã ví dụ:Mục nhập huyền thoại kết hợp cho ô và fill_between

import numpy as np 
import matplotlib.pyplot as plt 

x = np.array([0,1]) 
y = x + 1 
f,a = plt.subplots() 
a.fill_between(x,y+0.5,y-0.5,alpha=0.5,color='b') 
a.plot(x,y,color='b',label='Stuff',linewidth=3) 
a.legend() 

plt.show() 

Đoạn mã trên tạo ra một huyền thoại mà trông như thế này:

enter image description here

Làm thế nào tôi có thể tạo ra một mục huyền thoại kết hợp bóng từ fill_between và dòng từ plot, vì vậy nó trông giống như thế này (mockup được thực hiện trong GIMP):

enter image description here

Trả lời

7

MPL hỗ trợ đầu vào tuple thành chú giải để bạn có thể tạo các mục nhập chú giải kết hợp (xem hình cuối cùng trên trang this). Tuy nhiên, kể từ bây giờ PolyCollections - mà fill_between tạo ra/trả về - không được hỗ trợ bởi chú giải, do đó, chỉ cần cung cấp một PolyCollection như một mục nhập trong một bộ chú giải tới chú giải sẽ không hoạt động (a fix is anticipated for mpl 1.5.x).

Cho đến khi sửa chữa đến, tôi khuyên bạn nên sử dụng proxy artist kết hợp với chức năng nhập chú giải 'tuple'. Bạn có thể sử dụng giao diện mpl.patches.Patch (như được minh họa trên trang nghệ sĩ proxy) hoặc bạn chỉ có thể sử dụng điền. ví dụ .:

import numpy as np 
import matplotlib.pyplot as plt 

x = np.array([0, 1]) 
y = x + 1 
f, a = plt.subplots() 
a.fill_between(x, y + 0.5, y - 0.5, alpha=0.5, color='b') 
p1 = a.plot(x, y, color='b', linewidth=3) 
p2 = a.fill(np.NaN, np.NaN, 'b', alpha=0.5) 
a.legend([(p2[0], p1[0]), ], ['Stuff']) 

plt.show() 

Compound legend with fill_between

+0

Cảm ơn! Việc thêm 'linewidth = 0' vào' fill' làm cho điều này đủ tốt, để loại bỏ 'khung' khỏi mục nhập chú giải. Nếu bạn tình cờ biết cách làm cho các phím chú giải có cùng chiều dài, do đó, dòng từ 'cốt truyện 'kéo dài sang cạnh trái/phải của hình chữ nhật' fill' trong chú giải, điều đó thậm chí còn tốt hơn. –

+0

Bí quyết tuyệt vời! – Thriveth

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