在 matplotlib 图中隐藏轴文本

新手上路,请多包涵

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

原文由 Dave 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 812
2 个回答

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

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

原文由 Ofri Raviv 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

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

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

原文由 Saullo G. P. Castro 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题