有没有办法隐藏所有子图的轴?

时间:2018-12-11 01:39:04

标签: python matplotlib

我试图并排绘制两个图像,而没有像网格线和轴这样的垃圾。我发现您可以使用plt.rcParams['axes.grid'] = False关闭所有网格线,但是无法确定是否有类似的轴选项。我知道您可以使用plt.axis('off'),但是您必须分别为每个子图指定它。

plt.rcParams['axes.grid'] = False

plt.subplot(1, 2, 1)
plt.imshow(img1)
plt.subplot(1, 2, 2)
plt.imshow(img2)

plt.show()

3 个答案:

答案 0 :(得分:2)

轴的不同组件都有各自的rc参数。因此,要关闭“所有内容”,您需要将它们全部设置为False

import numpy as np
import matplotlib.pyplot as plt

rc = {"axes.spines.left" : False,
      "axes.spines.right" : False,
      "axes.spines.bottom" : False,
      "axes.spines.top" : False,
      "xtick.bottom" : False,
      "xtick.labelbottom" : False,
      "ytick.labelleft" : False,
      "ytick.left" : False}
plt.rcParams.update(rc)

img = np.random.randn(100).reshape(10,10)

fig, (ax, ax2) = plt.subplots(ncols=2)

ax.imshow(img)
ax2.imshow(img)

plt.show()

enter image description here

答案 1 :(得分:1)

一种选择是遍历图中的轴并将其关闭。您需要创建图形对象,然后使用fig.axes来返回子图列表:

g,h,i

enter image description here

您还可以浏览rcParams并将所有的刺,刻度和刻度标签设置为False。

答案 2 :(得分:0)

尝试使用:

plt.axis('off')

并且:

plt.grid(False)

相反,整个代码将是:

plt.subplot(1, 2, 1)
plt.imshow(img1)
plt.axis('off')
plt.grid(False)
plt.subplot(1, 2, 2)
plt.imshow(img2)
plt.axis('off')
plt.grid(False)

plt.show()