2013-08-30 8 views
14

đồ họa của tôi đi từ y = -1 để y = 10Matplotlib, cách viết chú thích bên ngoài bản vẽ trong hợp đồng dữ liệu?

Tôi muốn viết một mảnh nhỏ của văn bản ở một vị trí tùy ý, nói tại x = 2000, y = 5:

rìu. chú thích ('MgII', xy = (2000.0, 5.0), xycoords = 'dữ liệu')

Bây giờ tôi muốn giống nhau, nhưng lần này đoạn văn bản phải nằm ngoài đồ họa, nhưng ở vị trí chính xác Tôi đánh dấu trong tọa độ dữ liệu:

ax.annotate ('MgII', xy = (2000.0, 10.5), xycoords = 'dữ liệu')

Nhưng sau đó biến mất (nhớ đồ họa của tôi đi từ -1 đến 10). Có rất nhiều không gian miễn phí trên đầu trang của đồ họa.

Và, nếu tôi chỉ định

xy = (2000,0, 9,999)

sau đó nhãn xuất hiện gần nơi tôi muốn nó, chỉ có nó là quá gần với biên giới trên của bức ảnh . Tôi muốn nó ở y = 10.5, đặc biệt.

+0

@nordev Không thuyết phục rằng 'clip_on' không nên làm việc ... mã chú thích là một chút khó tính (tôi nghĩ rằng nó đã được viết trước, sau đó nghệ sĩ đã được thừa nhận lại và chú thích không bao giờ được cập nhật) – tacaswell

Trả lời

20
ax.annotate('MgII', xy=(2000.0, 10.5), xycoords='data', annotation_clip=False) 

Theo mặc định trong đơn vị dữ liệu chú thích chỉ được vẽ nếu nó nằm trong trục.

Bạn có thể nên sử dụng một blended transform:

trans = ax.get_xaxis_transform() # x in data untis, y in axes fraction 
ann = ax.annotate('MgII', xy=(2000, 1.05), xycoords=trans) 
+1

Xin chào, cảm ơn rất nhiều! (+1) Câu trả lời này đến rất nhanh, tôi chưa thể chấp nhận nó (có một cảnh báo màu đỏ nói điều gì đó như: bạn có thể chấp nhận câu trả lời trong 3 phút). Tôi yêu StackExchange. – Mephisto

+1

@Mephisto Xem chỉnh sửa – tacaswell

+0

Tôi hiểu. Cảm ơn, rất hữu ích, thậm chí nhiều hơn tùy chọn đầu tiên. – Mephisto