2013-12-16 14 views
10

Tôi đang chạy mô phỏng 200 lần và vẽ 3 danh sách đầu ra dưới dạng 3 dòng có độ trong suốt cao. Điều này cho phép tôi thể hiện sự khác biệt giữa các mô phỏng.Pyplot: chỉ hiển thị 3 dòng đầu tiên trong chú thích

Vấn đề là chú thích của tôi hiển thị 3x200 mục thay vì 3 mục. Tôi làm cách nào để hiển thị chú thích cho từng dòng một lần?

for simulation in range(200): 
    plt.plot(num_s_nodes, label="susceptible", color="blue", alpha=0.02) 
    plt.plot(num_r_nodes, label="recovered", color="green", alpha=0.02) 
    plt.plot(num_i_nodes, label="infected", color="red", alpha=0.02) 
plt.legend() 
plt.show() 

Trả lời

16

thêm

plt.plot(... , label='_nolegend_') 

cho bất kỳ âm mưu mà bạn không muốn hiển thị trong truyền thuyết. như vậy trong mã của bạn bạn có thể ví dụ làm:

..., label='_nolegend_' if simulation else 'susceptible', ... 

và tương tự cho người khác, hoặc nếu bạn không thích mã iffy:

..., label=simulation and '_nolegend_' or 'susceptible',... 
+2

Đặt 'label = None' cũng sẽ hoạt động. – tacaswell

+0

@tacaswell setting 'label = None' thực sự là phụ thuộc khác nhau và không loại bỏ nghệ sĩ khỏi chú giải. Ví dụ: 'plt.plot ([0,1], [0,1], nhãn = Không có); plt.plot ([0,1], [1,0]); plt.legend (['justthislabel']) 'sẽ hiển thị hai mục trong chú giải. Thay thế 'None' bằng' '_nolegend_'' chỉ tạo ra một. – oLas

8

Để tránh thêm logic trong âm mưu của mình, sử dụng 'proxy' nghệ sĩ cho các mục nhập huyền thoại của bạn:

# no show lines for you ledgend 
plt.plot([], label="susceptible", color="blue", alpha=0.02) 
plt.plot([], label="recovered", color="green", alpha=0.02) 
plt.plot([], label="infected", color="red", alpha=0.02) 

for simulation in range(200): 
    # your actual lines 
    plt.plot(num_s_nodes, color="blue", alpha=0.02) 
    plt.plot(num_r_nodes, color="green", alpha=0.02) 
    plt.plot(num_i_nodes, color="red", alpha=0.02) 
plt.legend() 
plt.show() 
+0

Điều tốt về điều này là nó cũng hoạt động nếu bạn sử dụng tex để phân tích các linelabels của bạn. Tôi không thể nhận được '_nolegend_' để làm việc với điều đó. – user35915

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