web-dev-qa-db-ja.com

サブプロットで軸をオフにする

私は次のコードを持っています:

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

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

36
Sergey Ivanov

Veedracのコメントのアドバイス( here にリンク)を少し修正するだけで、軸をオフにできます。

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
_
71
Ffisegydd
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())
5
Nirmal