2016-03-16 14 views
5

Giả sử tôi có một cá thể gridspec của matplotlib trong một tập lệnh python. Những gì tôi muốn làm là tạo ra hai trục và có cốt truyện trong một trục và chú giải trong một trục khác. Một cái gì đó nhưhuyền thoại matplotlib của Python trong trục riêng biệt với lưới hình ảnh

import numpy as np 
from matplotlib import gridspec, pyplot as plt 

x = np.linspace(0,100) 
y = np.sin(x) 

gs = gridspec.GridSpec(100, 100) 
ax1 = fig.add_subplot(gs[ :50, : ]) 
ax2 = fig.add_subplot(gs[ 55:, : ]) 
ax1.plot(s, y, label=r'sine') 
ax2.legend() # ?? Here I want legend of ax1 
plt.show() 

Có cách nào để làm điều đó không?

Trả lời

4

Bạn có thể lấy tay cầm chú giải và nhãn từ tiểu sử đầu tiên bằng cách sử dụng ax1.get_legend_handles_labels() và sau đó sử dụng chúng khi bạn tạo chú giải trên phụ đề thứ hai.

Từ docs:

get_legend_handles_labels(legend_handler_map=None)

xử lý Return và nhãn cho huyền thoại

ax.legend() tương đương với:

h, l = ax.get_legend_handles_labels() 
ax.legend(h, l) 
import numpy as np 
from matplotlib import gridspec, pyplot as plt 

x = np.linspace(0,100) 
y = np.sin(x) 

fig = plt.figure() 

gs = gridspec.GridSpec(100,100) 
ax1 = fig.add_subplot(gs[ :50, : ]) 
ax2 = fig.add_subplot(gs[ 55:, : ]) 

ax1.plot(x, y, label=r'sine') 

h,l=ax1.get_legend_handles_labels() # get labels and handles from ax1 

ax2.legend(h,l)      # use them to make legend on ax2 

plt.show() 

enter image description here

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