web-dev-qa-db-ja.com

Matplotlib-x軸の特定の目盛りを非表示にする

私は棒グラフの最初と最後のx軸の目盛りテキスト、つまり '2004'と '2013'を非表示にしようとしています。データセットが2005年から2012年のものであっても、Matplotlibはこれらをデフォルトで自動的に追加します。そのため、棒グラフに2004と2013を含めたくありません。これらの目盛りを選択して非表示にするコード行を探しています。何か案は?

21
Osmond Bishop

それがあなたが望むものではないかどうか教えてください。

import sys, os
import matplotlib.pyplot as plt

path = sys.path[0]
sizes = [(12,3,), (4,3,)]
x =  range(20)


for i, size in enumerate(sizes):
    fig = plt.figure(figsize = size, dpi = 80, facecolor='white',edgecolor=None,linewidth=0.0, frameon=True, subplotpars=None)
    ax = fig.add_subplot(111)
    ax.plot(x)
    plt.ylabel ('Some label')
    plt.tight_layout()

    make_invisible = True
    if (make_invisible):
        xticks = ax.xaxis.get_major_ticks()
        xticks[0].label1.set_visible(False)
        xticks[-1].label1.set_visible(False)

plt.show()

この例では、最初と最後のXティックを非表示にします。ただし、特別な目盛りのチェックを簡単に追加できます。

27
Bruno Gelb

@DmitryNazarovの答えに追加するだけで、目盛ラベルを非表示にして、グリッド線を表示したままにしたい場合は、次を使用します:

ax = plt.gca()     
ax.axes.xaxis.set_ticklabels([])
ax.axes.yaxis.set_ticklabels([])
3