Подтвердить что ты не робот

Выключить оси в подзаголовках

У меня есть следующий код:

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

Как отключить значения осей для всех подзаговоров одновременно?

4b9b3361

Ответ 1

Вы можете отключить оси, следуя советам в комментарии Veedrac (ссылка на здесь) с одной небольшой модификацией.

Вместо plt.axis('off') вы должны использовать ax.axis('off') где ax - объект matplotlib.axes. Чтобы сделать это для вашего кода, вам просто нужно добавить axarr[0,0].axis('off') и т.д. Для каждого из ваших подзаговоров.

В приведенном ниже коде показан результат (я удалил часть prune_matrix, потому что у меня нет доступа к этой функции, в будущем, пожалуйста, отправьте полностью рабочий код.)

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