在Matplotlib图中隐藏轴文本

我试图在两个轴上绘制一个没有刻度或数字的图形(我使用传统意义上的轴,而不是matplotlib命名法!)。我遇到的一个问题是matplotlib通过减去值N来调整x(y)ticklabel,然后在轴的末端添加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子图。


沧海一幻觉
浏览 1405回答 3
3回答

陪伴而非守候

除了隐藏每个元素,您还可以隐藏整个轴: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([])也将隐藏网格线。

万千封印

我实际上无法根据此处的任何代码段(甚至答案中接受的代码段)来绘制没有边框或轴数据的图像。在浏览了一些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调用基本上关闭了可能呈现的任何其他信息,并且在输出文件中有一个完美的图形。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python