在matplotlib图中隐藏轴文本

我试图绘制一个没有tickmarks或数字的graphics(我使用传统意义上的坐标轴,而不是matplotlib术语!)。 我碰到的一个问题是matplotlib通过减去一个值N来调整x(y)标签,然后在轴的末尾加上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() 

我想知道的三件事情是:

  1. 如何closures这种行为(尽pipe在大多数情况下,这是有用的,但并不总是!)我已经通过matplotlib.axis.XAxis ,找不到任何适当的东西

  2. 如何让N消失(即X.set_visible(False)

  3. 有没有更好的办法做到上述呢? 如果这是相关的,我的最终情节将是一个数字的4×4子图。

而不是隐藏每个元素,您可以隐藏整个轴:

 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()向轴添加标签。

如果你只想隐藏轴线文本保持网格线:

 frame1 = plt.gca() frame1.axes.xaxis.set_ticklabels([]) frame1.axes.yaxis.set_ticklabels([]) 

set_visible(False)set_ticks([])也会隐藏网格线。

有些旧的线程,但是,这似乎是使用最新版本的matplotlib更快的方法:

设置X轴的主要格式化程序

 ax.xaxis.set_major_formatter(plt.NullFormatter()) 

如果你像我一样,并不总是检索轴, ax ,当绘制图时,那么一个简单的解决scheme就是做

 plt.xticks([]) plt.yticks([]) 

我实际上不能根据这里的任何代码片段(甚至是在答案中接受的代码片段)渲染没有边界或轴数据的图像。 在挖掘了一些API文档之后,我登陆这个代码来渲染我的图像

 plt.axis('off') plt.tick_params(axis='both', left='off', top='off', right='off', bottom='off', labelleft='off', labeltop='off', labelright='off', labelbottom='off') plt.savefig('foo.png', dpi=100, bbox_inches='tight', pad_inches=0.0) 

我使用tick_params调用基本上closures任何额外的信息,可能会呈现,我有一个完美的graphics在我的输出文件:)。 希望这可以帮助!