2012-10-22 43 views
35

Tôi có một đồ thị, được tính từ một số dữ liệu, được vẽ trong matplotlib. Tôi muốn vẽ một vùng hình chữ nhật quanh mức tối đa toàn cầu của biểu đồ này. Tôi đã thử plt.axhspan, nhưng hình chữ nhật dường như không xuất hiện khi tôi gọi plt.show()Làm thế nào để vẽ một hình chữ nhật trên một khu vực cụ thể trong một đồ thị matplotlib

Vì vậy, làm thế nào một khu vực hình chữ nhật có thể được vẽ lên biểu đồ matplotlib? Cảm ơn!

Trả lời

45

Lý do có khả năng nhất là bạn đã sử dụng đơn vị dữ liệu cho x đối số khi gọi axhspan. Từ the function's docs (tôi nhấn mạnh):

y coords là trong các đơn vị dữ liệu và x coords là trong trục (so 0-1) đơn vị.

Vì vậy, bất kỳ hình chữ nhật nào kéo dài bên trái của 0 hoặc bên phải của 1 chỉ đơn giản là được vẽ ngoài cốt truyện.

Cách thay thế dễ dàng có thể là thêm Rectangle vào trục của bạn (ví dụ: qua plt.gcaadd_patch); Rectangle sử dụng đơn vị dữ liệu cho cả hai thứ nguyên. Sau đây sẽ thêm hình chữ nhật màu xám có chiều rộng & chiều cao của 1 được đặt ở giữa (2,3):

from matplotlib.patches import Rectangle 
someX, someY = 2, 3 
currentAxis = plt.gca() 
currentAxis.add_patch(Rectangle((someX - .5, someY - .5), 1, 1, facecolor="grey")) 
Các vấn đề liên quan