隐藏matplotlib图中的轴文本
我想画一个图,但不想在坐标轴上显示刻度和数字(我这里说的坐标轴是传统意义上的,不是matplotlib里的说法!)。我遇到的问题是,matplotlib会调整x(y)轴的标签,先减去一个值N,然后在坐标轴的末尾加上N。
这可能说得不太清楚,但下面这个简单的例子能说明问题,其中'6.18'就是那个让人烦恼的值N:
import matplotlib.pyplot as plt
import random
prefix = 6.18
rx = [prefix+(0.001*random.random()) for i in arange(100)]
ry = [prefix+(0.001*random.random()) for i in arange(100)]
plt.plot(rx,ry,'ko')
frame1 = plt.gca()
for xlabel_i in frame1.axes.get_xticklabels():
xlabel_i.set_visible(False)
xlabel_i.set_fontsize(0.0)
for xlabel_i in frame1.axes.get_yticklabels():
xlabel_i.set_fontsize(0.0)
xlabel_i.set_visible(False)
for tick in frame1.axes.get_xticklines():
tick.set_visible(False)
for tick in frame1.axes.get_yticklines():
tick.set_visible(False)
plt.show()
我想知道的三件事是:
怎么才能关闭这种行为(虽然在大多数情况下这很有用,但并不是总是这样!)我查过
matplotlib.axis.XAxis
,但找不到合适的设置。我怎么才能让N消失(也就是
X.set_visible(False)
)有没有更好的方法来做到这一点?我的最终图表会是一个4x4的子图,如果这有关系的话。
12 个回答
225
如果你和我一样,在绘制图形时不总是获取坐标轴 ax
,那么一个简单的解决办法就是这样做:
plt.xticks([])
plt.yticks([])
302
如果你想只隐藏坐标轴的文字,同时保留网格线:
frame1 = plt.gca()
frame1.axes.xaxis.set_ticklabels([])
frame1.axes.yaxis.set_ticklabels([])
使用 set_visible(False)
或 set_ticks([])
这两种方法也会把网格线隐藏掉。
668
与其一个一个地隐藏每个元素,不如直接隐藏整个坐标轴:
frame1.axes.get_xaxis().set_visible(False)
frame1.axes.get_yaxis().set_visible(False)
或者,你可以把刻度设置为空列表:
frame1.axes.get_xaxis().set_ticks([])
frame1.axes.get_yaxis().set_ticks([])
在第二种方法中,你仍然可以使用 plt.xlabel()
和 plt.ylabel()
来给坐标轴添加标签。