2012-03-28 38 views
13

tôi phải dịch một hình ảnh âm mưu kịch bản từ MATLAB để Matplotlib/pylab, và tôi đang cố gắng để đạt được hiệu quả tương tự như hình ảnh matlab dưới đây:Làm cách nào để cho âm mưu matplotlib của tôi vượt ra ngoài các trục?

image generated using matlab

Như bạn thấy, thứ tự z các ô có vẻ cao hơn thứ tự z của lưới, vì vậy các điểm đánh dấu không bị ẩn bởi các trục. Tuy nhiên, tôi không thể tìm ra một cách để làm điều tương tự với hình ảnh matplotlib tôi:

eimage generated with matplotlib

Tôi tự hỏi nếu nó có thể để có được màn hình hiển thị tương tự mà không cần phải tăng giới hạn của y trục.

+0

tôi chắc chắn bạn có lý do chính đáng để thích hành vi matlab nhưng IMHO vẽ bên ngoài các trục là chi tiết của một lỗi hơn một tính năng. – joaquin

Trả lời

30

Để làm cho điểm đánh dấu hiển thị bên ngoài các trục, bạn có thể biến cắt bớt. Điều này có thể được thực hiện bằng cách sử dụng đối số từ khóa trong lệnh plotclip_on=False.

Ví dụ:

import matplotlib.pyplot as plt 
plt.plot(range(5), range(5), 'ro', markersize=20, clip_on=False, zorder=100) 
plt.show() 

enter image description here

+0

+1 Có! Tôi khá chắc chắn đây là những gì OP đang tìm kiếm, nhưng điều đó không rõ ràng - với tôi ít nhất - cho đến khi bình luận của ông về câu trả lời (không đạt tiêu chuẩn) của tôi. Hy vọng rằng OP sẽ chấp nhận điều này. Cảm ơn vì đăng. – bernie

+0

THANK YOU SOOOOO MUCH !!!!! Đây chính xác là những gì tôi cần! – nay

+0

Tuyệt vời! Đúng thứ tôi cần. – bretcj7

1

Đây là một ví dụ hoàn chỉnh về cách sử dụng các zorder kwarg: http://matplotlib.sourceforge.net/examples/pylab_examples/zorder_demo.html
Lưu ý rằng một z bậc cao tương đương với một đồ thị phần tử được nhiều hơn ở mặt trước.

Đối với câu hỏi thứ hai của bạn, có một cái nhìn tại figsize kwarg với các trường hợp lớp Figure: http://matplotlib.sourceforge.net/api/figure_api.html?highlight=figsize#matplotlib.figure.Figure

Nếu bạn gặp sự cố, xin vui lòng đăng một số mã của bạn và chúng tôi sẽ có thể cung cấp cho thêm- đề xuất chi tiết. May mắn nhất.

+0

Cảm ơn bạn, tôi sẽ xem xét 2 liên kết bạn đã viết. Đối với mã, tôi nghĩ rằng nó là một hành vi mặc định của matplotlib để xem xét rằng nếu điểm chính nó (ở đây ví dụ 0,2; 0) có thể nhìn thấy, sau đó nó không phải là một vấn đề nếu các điểm đánh dấu xung quanh nó không phải là hoàn toàn có thể nhìn thấy. Đó là hành vi mà tôi đang cố gắng thay đổi – nay

+0

@nay: có vẻ như tom10 có câu trả lời cho câu hỏi của bạn. Chúc mừng mã hóa! – bernie

+0

có !!! Cảm ơn bạn đã giúp đỡ =) – nay

0

Nếu bạn đang vẽ đồ thị theo đường kẻ kia, chỉ cần thay đổi thứ tự của cuộc gọi âm mưu và điều đó sẽ sửa thứ tự z.

+0

Cảm ơn câu trả lời của bạn, thực sự những gì tôi đang cố làm là làm cho thứ tự x của các ô cao hơn thứ tự z của lưới, sao cho các điểm đánh dấu (ví dụ tại (0,2; 0)) trở nên hoàn toàn có thể nhìn thấy như hình ảnh matlab. – nay

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