在子图中关闭轴

时间:2014-09-16 06:32:07

标签: python image matplotlib

我有以下代码:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import matplotlib.cm as cm

img = mpimg.imread("lena.jpg")

f, axarr = plt.subplots(2, 2)
axarr[0,0].imshow(img, cmap = cm.Greys_r)
axarr[0,0].set_title("Rank = 512")

rank = 128
new_img = prune_matrix(rank, img)
axarr[0,1].imshow(new_img, cmap = cm.Greys_r)
axarr[0,1].set_title("Rank = %s" %rank)

rank = 32
new_img = prune_matrix(rank, img)
axarr[1,0].imshow(new_img, cmap = cm.Greys_r)
axarr[1,0].set_title("Rank = %s" %rank)

rank = 16
new_img = prune_matrix(rank, img)
axarr[1,1].imshow(new_img, cmap = cm.Greys_r)
axarr[1,1].set_title("Rank = %s" %rank)

plt.show()

然而,由于轴上的值,结果非常难看:

enter image description here

如何同时关闭所有子图的轴值?

2 个答案:

答案 0 :(得分:61)

您可以按照Veedrac评论中的建议(链接到here)进行一次小修改,从而关闭轴。

不应使用plt.axis('off'),而应使用ax.axis('off'),其中axmatplotlib.axes个对象。要为您的代码执行此操作,您只需为每个子图添加axarr[0,0].axis('off')等等。

下面的代码显示了结果(我删除了prune_matrix部分,因为我无法访问该功能,以后请提交完整的工作代码。)< / p>

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import matplotlib.cm as cm

img = mpimg.imread("stewie.jpg")

f, axarr = plt.subplots(2, 2)
axarr[0,0].imshow(img, cmap = cm.Greys_r)
axarr[0,0].set_title("Rank = 512")
axarr[0,0].axis('off')

axarr[0,1].imshow(img, cmap = cm.Greys_r)
axarr[0,1].set_title("Rank = %s" % 128)
axarr[0,1].axis('off')

axarr[1,0].imshow(img, cmap = cm.Greys_r)
axarr[1,0].set_title("Rank = %s" % 32)
axarr[1,0].axis('off')

axarr[1,1].imshow(img, cmap = cm.Greys_r)
axarr[1,1].set_title("Rank = %s" % 16)
axarr[1,1].axis('off')

plt.show()

Stewie example

注意:要仅关闭x轴或y轴,您可以使用set_visible(),例如:

axarr[0,0].xaxis.set_visible(False) # Hide only x axis

答案 1 :(得分:4)

import matplotlib.pyplot as plt

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


要关闭所有子图的轴,请执行以下任一操作:

[axi.set_axis_off() for axi in ax.ravel()]

map(lambda axi: axi.set_axis_off(), ax.ravel())