2011-08-12 36 views
33

Có cách nào để nói pyplot.text() một vị trí giống như bạn có thể với pyplot.legend() không?vị trí tự động hộp văn bản trong matplotlib

Cái gì đó như là đối số huyền thoại sẽ là tuyệt vời:

plt.legend(loc="upper left") 

Tôi cố gắng để nhãn subplots với các trục khác nhau sử dụng chữ cái (ví dụ "A", "B"). Tôi nghĩ rằng có một cách tốt hơn là ước lượng thủ công vị trí.

Cảm ơn

Trả lời

20

Tôi không chắc liệu điều này có khả dụng khi tôi đăng câu hỏi ban đầu hay không nhưng việc sử dụng thông số loc bây giờ có thể được sử dụng thực sự. Dưới đây là một ví dụ:

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.offsetbox import AnchoredText 

# make some data 
x = np.arange(10) 
y = x 

# set up figure and axes 
f, ax = plt.subplots(1,1) 

# loc works the same as it does with figures (though best doesn't work) 
# pad=5 will increase the size of padding between the border and text 
# borderpad=5 will increase the distance between the border and the axes 
# frameon=False will remove the box around the text 

anchored_text = AnchoredText("Test", loc=2) 
ax.plot(x,y) 
ax.add_artist(anchored_text) 

plt.show() 

enter image description here

+1

'AnchoredText' dường như không xử lý' loc = "best" '? – zyxue

+0

@zyxue: xem https://github.com/matplotlib/matplotlib/issues/1313 – naught101

31

Chỉ cần sử dụng annotate và xác định tọa độ trục. Ví dụ, "phía trên bên trái" sẽ là:

plt.annotate('Something', xy=(0.05, 0.95), xycoords='axes fraction') 

Bạn cũng có thể nhận được fancier và chỉ định một hằng số bù đắp ở điểm:

plt.annotate('Something', xy=(0, 1), xytext=(12, -12), va='top' 
      xycoords='axes fraction', textcoords='offset points') 

Đối với lời giải thích hơn xem các ví dụ here và các ví dụ chi tiết hơn here .

+0

@Garrett - Cảm ơn! Chúng phải được sửa ngay bây giờ. –

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