4

形状 (2, 3) の 6 つのサブプロットで構成される図があります。内部の目盛りをすべて削除し、左側と下側の目盛りラベルのみを表示したいと考えています。

デフォルトの目盛り:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(2,3,
                       sharex = True,
                       sharey = True)
plt.subplots_adjust(hspace = 0,
                    wspace = 0)

これを生成します:

デフォルト

無数の例を見た後、内部の目盛りを削除することに成功しましたが、新しい (追加の) 目盛りラベルが表示されました。目盛りラベルを削除するために見つけた解決策は機能しません。指定された軸だけでなく、すべての x (または y) 目盛りラベルを削除します。

新しいコード:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(2,3,
                       sharex = True,
                       sharey = True)
plt.subplots_adjust(hspace = 0,
                    wspace = 0)
ax[0,0].xaxis.set_ticks_position('top')
ax[0,0].yaxis.set_ticks_position('left')
ax[0,1].xaxis.set_ticks_position('top')
ax[0,1].yaxis.set_ticks_position('none')
ax[0,2].xaxis.set_ticks_position('top')
ax[0,2].yaxis.set_ticks_position('right')

ax[1,0].xaxis.set_ticks_position('bottom')
ax[1,0].yaxis.set_ticks_position('left')
ax[1,1].xaxis.set_ticks_position('bottom')
ax[1,1].yaxis.set_ticks_position('none')
ax[1,2].xaxis.set_ticks_position('bottom')
ax[1,2].yaxis.set_ticks_position('right')

これを生成します:

試み

私が最終的な出力をしたいのはこれです:

最後の

左側と下部のラベルに注意してください。ただし、周囲に目盛りが付いています。

4

2 に答える 2

5

これは、任意のサイズのグリッドで機能します。あなたの問題は、目盛りを削除していないことでした.目盛りを一番上に移動しただけです:

import matplotlib.pyplot as plt
import numpy as np

Nrows = 2
Ncols = 3

fig, ax = plt.subplots(Nrows, Ncols,
                       sharex=True,
                       sharey=True)
plt.subplots_adjust(hspace=0,
                    wspace=0)


for i in range(Nrows):
    for j in range(Ncols):
        if i == 0:
            ax[i,j].xaxis.set_ticks_position('top')
            plt.setp(ax[i,j].get_xticklabels(), visible=False)
        elif i == Nrows-1:
            ax[i,j].xaxis.set_ticks_position('bottom')
        else:
            ax[i,j].xaxis.set_ticks_position('none')

        if j == 0:
            ax[i,j].yaxis.set_ticks_position('left')
        elif j == Ncols-1:
            ax[i,j].yaxis.set_ticks_position('right')
            plt.setp(ax[i,j].get_yticklabels(), visible=False)
        else:
            ax[i,j].yaxis.set_ticks_position('none')
于 2013-10-03T14:27:49.213 に答える