正如@imsc指出的那样,您可以使用
ax.xaxis.set_ticks_position和
ax.yaxis.set_ticks_position方法,通过将刻度线的位置设置在底部和左侧(如果不想在顶部和右侧)来调整刻度线的可见性
。
如果还希望将轴本身设置为不可见,请签出matplotlib.spines类。您只需要
none使用该
ax.spines[spine].set_color方法将脊椎的颜色设置为即可。
如果要显示很多图,并且不想每次都手动关闭轴/刻度,则下面的功能将为您完成这项工作。
基本上,您可以为每个轴定义所需的颜色(在这种情况下
none将使其变为不可见),并且该功能还将为所有不可见的轴“关闭”刻度线。我还添加选项来定义的
linewidth轴线的线,以及作为
fontsize所述ticklabels和
pad所述ticklabels和蜱之间。
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)以下是如何使用它的示例:
import numpy as npimport matplotlib.pyplot as pltfig, ([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 axiscustomaxis(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()



