2014-04-17 23 views
11

Trong MATLAB, nó đơn giản để có được và thiết lập vị trí của một trục hiện hành về con số:Matplotlib: get và set trục vị trí

pos = get(gca(), 'position') 
    set(gca(), 'position', pos) 

Làm thế nào để làm điều này trong Matplotlib?

tôi cần điều này vì hai lý do liên quan:

Đây là những vấn đề cụ thể tôi đang cố gắng để giải quyết:

  • Tôi có một cột của ô phụ, nơi một số có colorbars và một số thì không và chúng không cùng chiều rộng, tức là trục X không thẳng hàng. Thanh màu đánh cắp không gian từ các trục. Điều này cũng xảy ra trong MATLAB, và ở đó tôi sẽ sử dụng thủ thuật trên để làm cho tất cả các trục đều rộng bằng cách sao chép chiều rộng từ một trục với thanh màu cho những cái không có.

  • thêm khoảng cách giữa các ô con riêng lẻ bằng cách thu nhỏ một trục. Hàm adjust_subplots() điều chỉnh tất cả các subplots giống nhau.

Trả lời

32

Đặt vị trí trục tương tự như trong Matplotlib. Bạn có thể sử dụng các phương pháp get_position và set_position của axes.

import matplotlib.pyplot as plt 

ax = plt.subplot(111) 
pos1 = ax.get_position() # get the original position 
pos2 = [pos1.x0 + 0.3, pos1.y0 + 0.3, pos1.width/2.0, pos1.height/2.0] 
ax.set_position(pos2) # set a new position 

Bạn cũng có thể muốn có một cái nhìn tại GridSpec nếu bạn chưa có.

+0

Tôi đã thử và thử lại nhưng nếu tôi chơi với set_position tôi chỉ di chuyển biểu đồ trong cửa sổ của mình. Tôi có thể vẽ các trục X ở y = 0 hoặc y = -1 hoặc ở các vị trí khác như thế nào? – DaniPaniz

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