我有以下代码:
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()
然而,由于轴上的值,结果非常难看:
如何同时关闭所有子图的轴值?
3条答案
按热度按时间yks3o0rb1#
您可以按照Veedrac的评论(链接到here)中的建议进行一个小修改来关闭轴。
而不是使用
plt.axis('off')
,你应该使用ax.axis('off')
,其中ax
是一个matplotlib.axes
对象。要为你的代码做到这一点,你只需要为你的每个子图添加axarr[0,0].axis('off')
等等。下面的代码显示了结果(我已经删除了
prune_matrix
部分,因为我没有访问该函数的权限,**将来请提交完整的工作代码。**注意:**要仅关闭x或y轴,您可以使用
set_visible()
,例如:slhcrj9b2#
要关闭所有子图的轴,请执行以下操作之一:
或
ttisahbt3#
另一种可能的方法是在打印每个轴时将
axison
属性设置为False。如果您想清楚地看到删除的内容,可以使用
Axes.set()
分别“删除”帧和刻度。最后,如果要在绘制图形后删除边框和刻度,可以循环遍历图形本身中的轴列表。
注意:这里给出的所有三个方法(
axis('off')
、set_axis_off()
和axison=False
)都是等效的方法,因为在后台,axis('off')
调用set_axis_off()
,set_axis_off()
又调用axison=False
,所以最终它们是相同的。