在matplotlib绘图中隐藏轴文本

2024-04-26 12:07:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在两个轴上绘制一个没有记号或数字的图形(我使用的是传统意义上的轴,而不是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. 如何首先关闭此行为(尽管在大多数情况下它是有用的,但并不总是如此!)我查遍了matplotlib.axis.XAxis,找不到任何合适的

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

  3. 有没有更好的方法来做以上的事情呢?如果相关的话,我的最终图是一个图形中的4x4个子块。


Tags: infalse图形forgetprefixmatplotlibplt
3条回答

如果你和我一样,不总是检索轴,ax,在绘制图形时,一个简单的解决方案是

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

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

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([])也会隐藏网格线。

相关问题 更多 >