web-dev-qa-db-ja.com

軸をpyplotサブプロットに保持しながらフレームを削除する

3つのサブプロットを持つFigureを作成していますが、Axesを配置したまま、それらの周りのフレームを削除する方法があるかどうか疑問に思いましたか?

18
branwen85

軸のスパインを削除したいが、他の情報(目盛り、ラベルなど)は削除したくない場合は、次のように実行できます。

fig, ax = plt.subplots(7,1, sharex=True)

t = np.arange(0, 1, 0.01)

for i, a in enumerate(ax):
    a.plot(t, np.sin((i + 1) * 2 * np.pi * t))
    a.spines["top"].set_visible(False)
    a.spines["right"].set_visible(False)
    a.spines["bottom"].set_visible(False)

または、より簡単に seaborn を使用します:

fig, ax = plt.subplots(7,1, sharex=True)

t = np.arange(0, 1, 0.01)

for i, a in enumerate(ax):
    a.plot(t, np.sin((i + 1) * 2 * np.pi * t))

seaborn.despine(left=True, bottom=True, right=True)

どちらのアプローチでも以下が得られます。

enter image description here

22
mwaskom

plt.box(on=None)を試してみてくださいonlyプロットの周りの境界ボックス(フレーム)を削除しました。

plt.axis('off')目盛りラベルと境界ボックスを削除しましたが、これは私が達成しようとしていたものではありませんでした。

お役に立てれば。

21
Ben Miller

軸ハンドルのaxis('off')メソッドを使用すると、このようなことを実現できます。これはあなたが求めているようなものですか? (図の下のサンプルコード)。

subplots without axes shown

fig, ax = plt.subplots(7,1)

t = np.arange(0, 1, 0.01)

for i, a in enumerate(ax):
    a.plot(t, np.sin((i+1)*2*np.pi*t))
    a.axis('off')

plt.show()
4
Bonlenfum