2012-07-10 44 views

Trả lời

15

Như nhọn bởi @imsc, Bạn có thể tinh chỉnh khả năng hiển thị của các dấu tick bằng cách thiết lập vị trí của ve ở phía dưới và bên trái (nếu bạn không muốn chúng ở trên và bên phải) bằng cách sử dụng các phương thức ax.xaxis.set_ticks_positionax.yaxis.set_ticks_position.

Nếu bạn cũng muốn đặt trục tự ẩn, hãy kiểm tra lớp matplotlib.spines. Bạn chỉ cần đặt màu của các gai thành none bằng cách sử dụng phương thức ax.spines[spine].set_color.

Nếu bạn có nhiều ô để hiển thị và không muốn tắt các trục/bọ theo cách thủ công mỗi lần, dưới đây là một chức năng sẽ thực hiện công việc cho bạn. Về cơ bản, bạn xác định cho mỗi trục màu bạn muốn (trong trường hợp này none sẽ làm cho nó vô hình), và chức năng cũng sẽ "tắt" các dấu tích cho tất cả các trục vô hình. Tôi cũng đã thêm các tùy chọn để xác định các số linewidth của các trục, cũng như fontsize của các dấu tick và pad giữa các dấu tick và dấu tick.

def customaxis(ax, c_left='k', c_bottom='k', c_right='none', c_top='none', 
       lw=3, size=12, pad=8): 

    for c_spine, spine in zip([c_left, c_bottom, c_right, c_top], 
           ['left', 'bottom', 'right', 'top']): 
     if c_spine != 'none': 
      ax.spines[spine].set_color(c_spine) 
      ax.spines[spine].set_linewidth(lw) 
     else: 
      ax.spines[spine].set_color('none') 
    if (c_bottom == 'none') & (c_top == 'none'): # no bottom and no top 
     ax.xaxis.set_ticks_position('none') 
    elif (c_bottom != 'none') & (c_top != 'none'): # bottom and top 
     ax.tick_params(axis='x', direction='out', width=lw, length=7, 
         color=c_bottom, labelsize=size, pad=pad) 
    elif (c_bottom != 'none') & (c_top == 'none'): # bottom but not top 
     ax.xaxis.set_ticks_position('bottom') 
     ax.tick_params(axis='x', direction='out', width=lw, length=7, 
         color=c_bottom, labelsize=size, pad=pad) 
    elif (c_bottom == 'none') & (c_top != 'none'): # no bottom but top 
     ax.xaxis.set_ticks_position('top') 
     ax.tick_params(axis='x', direction='out', width=lw, length=7, 
         color=c_top, labelsize=size, pad=pad) 
    if (c_left == 'none') & (c_right == 'none'): # no left and no right 
     ax.yaxis.set_ticks_position('none') 
    elif (c_left != 'none') & (c_right != 'none'): # left and right 
     ax.tick_params(axis='y', direction='out', width=lw, length=7, 
         color=c_left, labelsize=size, pad=pad) 
    elif (c_left != 'none') & (c_right == 'none'): # left but not right 
     ax.yaxis.set_ticks_position('left') 
     ax.tick_params(axis='y', direction='out', width=lw, length=7, 
         color=c_left, labelsize=size, pad=pad) 
    elif (c_left == 'none') & (c_right != 'none'): # no left but right 
     ax.yaxis.set_ticks_position('right') 
     ax.tick_params(axis='y', direction='out', width=lw, length=7, 
         color=c_right, labelsize=size, pad=pad) 

Dưới đây là một ví dụ về cách sử dụng nó:

import numpy as np 
import matplotlib.pyplot as plt 

fig, ([ax1, ax2], [ax3, ax4]) = plt.subplots(nrows=2, ncols=2) 

for ax in [ax1, ax2, ax3, ax4]: 
    ax.plot(np.random.randn(10), lw=2) 

customaxis(ax1) #default: no right and top axis 
customaxis(ax2, c_left='none', c_bottom='none', c_right='k', c_top='k') 
customaxis(ax3, c_left='none', c_bottom='k', c_right='k', c_top='none') 
customaxis(ax4, c_left='k', c_bottom='none', c_right='none', c_top='k') 

plt.show() 

spines

9

tick_params nên làm điều đó.

Tôi không có matplotlib được cài đặt trên máy tính hiện tại của tôi, vì vậy tôi không thể kiểm tra nó, nhưng điều này sẽ làm việc:

import matplotlib.pyplot as plt 

ax = plt.subplot(111) 
plt.plot([0,1], [0,1]) 
ax.tick_params(labeltop='off', labelright='off') 
plt.show() 
1
plt.tick_params(top='off', right='off', which='both') 

tôi đã sử dụng trên mã với 'bật' thay vì 'tắt', để hiển thị dấu tick ở trên cùng và bên phải cùng với mặc định 'dưới cùng' và 'trái', trong matplotlib 2.0

+0

Chào mừng bạn đến với SO! Vui lòng định dạng câu trả lời của bạn để dễ đọc hơn, hãy xem nút trợ giúp định dạng ở bên phải của hộp chỉnh sửa khi bạn chỉnh sửa câu trả lời. –

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