1. ホーム
  2. python

[解決済み] サブプロットで軸をオフにする

2023-04-22 21:11:26

質問

次のようなコードがあります。

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()

しかし、軸の値のため、結果はかなり醜いものになります。

すべてのサブプロットの軸の値を同時にオフにするにはどうすればよいですか?

どのように解決するのですか?

Veedrac のコメントにあるアドバイスに従って、軸をオフにすることができます (リンク先は はこちら ) のアドバイスに従って、1 つの小さな変更を加えて、軸をオフにすることができます。

を使うよりも、むしろ plt.axis('off') を使用する必要があります。 ax.axis('off') ここで axmatplotlib.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()

<イグ

注意 x 軸または y 軸のみをオフにするには、以下のようにします。 set_visible() などとします。

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