参考来源:https://zhuanlan.zhihu.com/p/32088843
https://www.delftstack.com/zh/howto/matplotlib/how-to-hide-axis-text-ticks-and-or-tick-labels-in-matplotlib/
在matplotlib中,刻度线叫做tick,刻度值叫做tick_label。
官方介绍图像
注意这幅图片中就包含了关于刻度线的一些信息。比方,不仅有主刻度线(Major tick),还有次刻度线(Minor tick)。并且我们看到刻度线都是朝着图的外侧。图中,上边的和右边的坐标轴(Spine)并没有刻度线。
那么所有我们看到的关于刻度线的属性,都是可以修改的,至于刻度值 (Tick label),在关于字符的问题中统一解决。在pylab中,有若干个函数用来修改刻度线的属性。
是否显示次刻度线
在pylab中内置了两个函数minorticks_on()和minorticks_off() 用来确定是否显示次刻度线。如下代码实现在左侧图中显示次刻度线,在右侧不显示次刻度线。在默认的情况下,不显示次刻度线。
1 2 3 4 5 6
| from pylab import * subplot(1,2,1) minorticks_on() subplot(1,2,2) minorticks_off() show()
|
刻度线的朝向
一般而言,我们希望刻度线朝外分布,这样避免影响图中的曲线和说明。但是有时候刻度线朝内分布,可以让图之间更加紧凑。在pylab中,利用tick_params控制刻度线的朝向,是朝图里,图外,还是都有。下面代码产生的图从左往右,分别显示朝里,朝外,两边都有的情况。
1 2 3 4 5 6 7 8 9 10 11
| from pylab import *
subplot(1,3,1) tick_params(direction='in')
subplot(1,3,2) tick_params(direction='out')
subplot(1,3,3) tick_params(direction='inout') show()
|
选择修改主刻度线还是次刻度线
通过上面的例子可以看出,修改刻度线的主要函数就是tick_params。那么每次调用这个函数,是修改主刻度线、次刻度线,还是都改呢?这个由参数which控制。比方下面这段代码,分别让主刻度线朝里、次刻度线朝里、主次均朝里。最后一个图说明默认情况下,主次刻度线均朝外。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| from pylab import * subplot(1,4,1) minorticks_on() tick_params(which='major',direction='in')
subplot(1,4,2) minorticks_on() tick_params(which='minor',direction='in')
subplot(1,4,3) minorticks_on() tick_params(which='both',direction='in')
subplot(1,4,4) minorticks_on() text(0.5,0.5,'default') show()
|
修改刻度线的长度和宽度
如上图,如果觉得刻度线太短,太细,不太显眼,我们可以修改其长短、粗细。依然使用函数tick_params,通过参数width和length控制。下面代码让左图的主刻度线粗一些,右图的次刻度线长一些。
1 2 3 4 5 6 7 8 9 10
| from pylab import * subplot(1,2,1) minorticks_on() tick_params(which='major',width=4)
subplot(1,2,2) minorticks_on() tick_params(which='minor',length=10)
show()
|
在哪些轴上显示刻度线
我们来看怎么控制刻度线出现在哪些轴上。这里用参数left,right,bottom,top来控制,下面代码画出的图片,依次显示上下左右轴上的刻度线。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| from pylab import * subplot(1,4,1) tick_params(top='on',bottom='off',left='off',right='off')
subplot(1,4,2) tick_params(top='off',bottom='on',left='off',right='off')
subplot(1,4,3) tick_params(top='off',bottom='off',left='on',right='off')
subplot(1,4,4) tick_params(top='off',bottom='off',left='off',right='on')
show()
|
在哪些轴上显示刻度值
注意上面的图,刻度线分别出现在我们控制的坐标轴上,但是刻度值在默认情况下还是出现在左下两个轴上。这里仅说明如何让刻度值出现在相应刻度线的位置。比方,我们仅让上面的轴显示刻度线,也仅在该轴上显示刻度值,利用labelbottom, labeltop, labelleft, labelright四个参数控制,代码和图如下所示。
1 2 3 4 5 6
| from pylab import *
tick_params(top='on',bottom='off',left='off',right='off') tick_params(labeltop='on',labelbottom='off',labelleft='off',labelright='off')
show()
|
设置x轴的刻度和显示
使用Matplotlib进行绘图时,当x轴的数据太多的时候,就需要设置x轴的刻度和显示文本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| import matplotlib as mpl import matplotlib.pyplot as plt
fig, ax = plt.subplots()
x = [d[0] for d in data] y = [d[1] for d in data]
xticks = range(0, len(x), 10) xlabels = [x[index] for index in xticks] xticks.append(len(x)) xlabels.append(data[-1][0])
ax.set_xticks(xticks) ax.set_xticklabels(xlabels, rotation=40)
plt.plot(y) plt.grid() plt.show()
|
其中,涉及到坐标轴的刻度以及显示文本的函数为
ax.set_xticks(xticks)#xticks中的数据作为坐标轴系数
ax.set_xticklabels(xlabels, rotation=40)#将x轴的刻度值
在 Matplotlib 中如何隐藏坐标轴文本刻度或刻度标签
- xaxis.set_visible(False)/yaxis.set_visible(False) 隐藏包括轴标签的坐标轴
- xaxis.set_ticks([])/yaxis.set_ticks([]) 在 Matplotlib 中隐藏坐标轴
- xaxis.set_ticklabels([])/yaxis.set_ticklabels([]) 在 Matplotlib 中隐藏轴标签/文本
- xticks(color=‘w’)/yticks(color=‘w’) 来隐藏 Matplotlib 中的坐标轴标签/文本
默认情况下,Matplotlib 中的图显示了两个轴的 ticks
和 ticklabels
,如示例图所示。
它有不同的隐藏坐标轴文本的方法,例如 xaxis.set_visible(False)
,xaxis.set_ticks([])
和 xaxis.set_ticklabels([])
。如果将刻度线的颜色设置为白色,则仅当 Matplotlib 图形的前景色为白色时,它也可能使轴文本不可见。
xaxis.set_visible(False)/yaxis.set_visible(False) 隐藏包括轴标签的坐标轴
顾名思义,它使整个坐标轴不可见,包括轴刻度,轴刻度标签和轴标签。
1 2 3 4 5 6 7 8 9 10 11 12
| import matplotlib.pyplot as plt
plt.plot([0, 10], [0, 10]) plt.xlabel("X Label") plt.ylabel("Y Label")
ax = plt.gca() ax.axes.xaxis.set_visible(False) ax.axes.yaxis.set_visible(False)
plt.grid(True) plt.show()
|
xaxis.set_ticks([])/yaxis.set_ticks([]) 在 Matplotlib 中隐藏坐标轴
x/yaxis.set_ticks([])
设置刻度为空,并使坐标轴刻度及其标签不可见。但是坐标轴标签不受影响。
1 2 3 4 5 6 7 8 9 10 11 12
| import matplotlib.pyplot as plt
plt.plot([0, 10], [0, 10]) plt.xlabel("X Label") plt.ylabel("Y Label")
ax = plt.gca() ax.axes.xaxis.set_ticks([]) ax.axes.yaxis.set_ticks([])
plt.grid(True) plt.show()
|
xaxis.set_ticklabels([])/yaxis.set_ticklabels([]) 在 Matplotlib 中隐藏轴标签/文本
x/yaxis.set_ticklabels([])
将刻度标签设置为空,从而使坐标轴文本(刻度标签)不可见,但刻度保持可见。
1 2 3 4 5 6 7 8 9 10 11 12 13
| import matplotlib.pyplot as plt
plt.plot([0, 10], [0, 10]) plt.xlabel("X Label") plt.ylabel("Y Label")
ax = plt.gca()
ax.axes.xaxis.set_ticklabels([]) ax.axes.yaxis.set_ticklabels([])
plt.grid(True) plt.show()
|
xticks(color=‘w’)/yticks(color=‘w’) 来隐藏 Matplotlib 中的坐标轴标签/文本
这种方法不会使刻度线标签或刻度线不可见,而是将刻度线的颜色设置为白色,以便在绘图的背景为白色(也是默认颜色)的情况下,轴文本的确是不可见的。
1 2 3 4 5 6 7 8 9 10 11
| import matplotlib.pyplot as plt
plt.plot([0, 10], [0, 10]) plt.xlabel("X Label") plt.ylabel("Y Label")
plt.xticks(color='w') plt.yticks(color='w')
plt.grid(True) plt.show()
|