デフォルトの「ボックス化された」軸スタイルの代わりに、左と下の軸のみを持ちたい、つまり:
+------+ |
| | |
| | ---> |
| | |
+------+ +-------
これは簡単なはずですが、ドキュメントに必要なオプションが見つかりません。
これは、公式Webサイトから推奨されるMatplotlib 2.0ソリューションです [〜#〜] here [〜#〜] :
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
ax = plt.subplot(111)
ax.plot(x, y)
# Hide the right and top spines
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
# Only show ticks on the left and bottom spines
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('bottom')
plt.show()
あるいは、これ
def simpleaxis(ax):
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.get_xaxis().tick_bottom()
ax.get_yaxis().tick_left()
回転したラベルのサポートを失うことなく、軸に対して同じ効果を達成するようです。
(Matplotlib 1.0.1; this に触発されたソリューション)。
ティックなどが必要ない場合(定性的なイラストのプロットなど)、次の簡単な回避策も使用できます。
軸を非表示にし(たとえば、plt.gca().axison = False
を使用)、plt.arrow
を使用して手動で描画します。
(これは、ここでの包括的な回答に加えて、拡張機能のコメントです。)
これら3つの要素をそれぞれ独立して非表示にできることに注意してください。
境界線(別名「背骨」)を非表示にするには:ax.set_frame_on(False)
またはax.spines['top'].set_visible(False)
目盛りを非表示にするには:ax.tick_params(top=False)
ラベルを非表示にするには:ax.tick_params(labeltop=False)
ライブラリSeabornには、関数despine()が組み込まれています。
追加するだけです:
import seaborn as sns
次に、グラフを作成します。最後に追加します:
sns.despine()
関数のデフォルトのパラメーター値の一部を見ると、上部と右側の脊椎が削除され、下部と左側の脊椎が保持されます。
sns.despine(top=True, right=True, left=False, bottom=False)
詳細なドキュメントはこちらをご覧ください: https://seaborn.pydata.org/generated/seaborn.despine.html
すべてのプロットから削除する必要がある場合は、スタイル設定(スタイルシートまたはrcParams)でスパインを削除できます。例えば:
import matplotlib as mpl
mpl.rcParams['axes.spines.right'] = False
mpl.rcParams['axes.spines.top'] = False
すべてのスパインを削除する場合:
mpl.rcParams['axes.spines.left'] = False
mpl.rcParams['axes.spines.right'] = False
mpl.rcParams['axes.spines.top'] = False
mpl.rcParams['axes.spines.bottom'] = False