为了账号安全,请及时绑定邮箱和手机立即绑定

在Matplotlib图中隐藏轴文本

在Matplotlib图中隐藏轴文本

沧海一幻觉 2019-10-23 16:29:21
我试图在两个轴上绘制一个没有刻度或数字的图形(我使用传统意义上的轴,而不是matplotlib命名法!)。我遇到的一个问题是matplotlib通过减去值N来调整x(y)ticklabel,然后在轴的末端添加N。这可能含糊其词,但以下简化示例突出了该问题,其中“ 6.18”是N的有问题的值:import matplotlib.pyplot as pltimport randomprefix = 6.18rx = [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子图。
查看完整描述

3 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

除了隐藏每个元素,您还可以隐藏整个轴:


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


查看完整回答
反对 回复 2019-10-23
?
米脂

TA贡献1836条经验 获得超3个赞

如果要仅隐藏保留网格线的轴文本:


frame1 = plt.gca()

frame1.axes.xaxis.set_ticklabels([])

frame1.axes.yaxis.set_ticklabels([])

做set_visible(False)或set_ticks([])也将隐藏网格线。


查看完整回答
反对 回复 2019-10-23
?
万千封印

TA贡献1891条经验 获得超3个赞

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


查看完整回答
反对 回复 2019-10-23
  • 3 回答
  • 0 关注
  • 1405 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信