matplotlibプロットのxticksを削除しますか?


290

semilogxプロットがあり、xticksを削除したいと思います。私は試した:

plt.gca().set_xticks([])
plt.xticks([])
ax.set_xticks([])

グリッドは消えます(ok)が、小さなティック(メインティックの場所)は残ります。それらを削除するには?


一部の解決策がうまくいきませんでした。しかし、ここでの例のほんの少しの変更:ax.set_xticks([], [])そしてそれは解決されました...
TravelTrader

回答:


464

このtick_paramsメソッドは、このようなものに非常に役立ちます。このコードは、主目盛りと副目盛りをオフにし、x軸からラベルを削除します。

from matplotlib import pyplot as plt
plt.plot(range(10))
plt.tick_params(
    axis='x',          # changes apply to the x-axis
    which='both',      # both major and minor ticks are affected
    bottom=False,      # ticks along the bottom edge are off
    top=False,         # ticks along the top edge are off
    labelbottom=False) # labels along the bottom edge are off
plt.show()
plt.savefig('plot')
plt.clf()

ここに画像の説明を入力してください


87
これが質問に答えるだけでなく、いくつかのものをオフ/オンにするためのテンプレートを提供する方法に感謝します。これは、x軸とy軸の両方に結果を適用する:plt.tick_params(axis='both', which='both', bottom='off', top='off', labelbottom='off', right='off', left='off', labelleft='off')
スティーブンC.ハウエル

2
3Dプロットの場合はどうなりますか?
tommy.carstensen

38
これは素晴らしい答えです。ooバージョンをお探しの方axesも同じtick_params方法です。
Mad Physicist

22
新しいバージョンではmatplotlib、あなたは交換する必要があります'on'Trueして'off'False
BallpointBen 2018年

1
回答は、OOPインターフェースと新しいバージョンの構文に合わせて更新する必要があります。
ifly6

141

OPが要求するものとは厳密には異なりますが、すべての軸線、目盛り、およびラベルを無効にする簡単な方法は、次のように呼び出すだけです。

plt.axis('off')

25
必要なものに感謝。オブジェクト指向バージョンはax.axis('off')、既存のAxesインスタンス上にあります。
PlasmaBinturong 2016年

5
xaxisだけはどうですか?
qrtLs

82

または、空のティック位置とラベルを次のように渡すことができます

# for matplotlib.pyplot
# ---------------------
plt.xticks([], [])
# for axis object
# ---------------
# from Anakhand May 5 at 13:08
# for major ticks
ax.set_xticks([])
# for minor ticks
ax.set_xticks([], minor=True)

8
既存の軸インスタンスを持っている場合、たとえばax、あなたが使用することができます:ax.set_xticks([], [])
ギリェルメサロメ

@GuilhermeSaloméこれにより、「set_xticks()のマイナーパラメーターを位置的に渡すことは、Matplotlib 3.2以降、非推奨になりました。このパラメーターは、後でキーワードのみの2つのマイナーリリースになります。」今、正しい解決策は何ですか?
Rylan Schaeffer

2
@RylanSchaefferはax.set_xticks([])、メジャーティック、ax.set_xticks([], minor=True)マイナーティックの場合。pyplotare plt.xticks([])およびと同等のものplt.xticks([], minor=True)
アナカンド


42

John Vinyardによって提供されたソリューションよりも優れたシンプルなソリューションがあります。使用NullLocator

import matplotlib.pyplot as plt

plt.plot(range(10))
plt.gca().xaxis.set_major_locator(plt.NullLocator())
plt.show()
plt.savefig('plot')

お役に立てば幸いです。


22
"Better"は議論の余地がありますが、選択肢は+1です。
Mechanical_Meat

メインプロットに残したまま、「ズームイン」されたインセットからxticksのみを削除することを目的とした場合、このソリューションのバリアントも機能しました。を使用するaxins.xaxis.set_major_locator(plt.NullLocator())と、axinsaxins = zoomed_inset_axes()(からインポートされた関数mpl_toolkits.axes_grid1.inset_locator)によって返されたオブジェクトです。
Dennis Soemers

28

これを試して、ラベルを削除します(目盛りは削除しません)。

import matplotlib.pyplot as plt

plt.setp( ax.get_xticklabels(), visible=False)


3
setpはpylabモードにあり、個々の軸に対しては使用できません
破線

1
オブジェクト指向のインターフェースはどうですか?
ifly6

これは、私にとって3Dプロットでも機能する唯一の回答でした。これをありがとう!
ブレント

13

このスニペットは、xticksのみを削除するのに役立ちます。

from matplotlib import pyplot as plt    
plt.xticks([])

このスニペットは、xticksとyticksの両方を削除するのに役立ちます。

from matplotlib import pyplot as plt    
plt.xticks([]),plt.yticks([])

3
# remove all the ticks (both axes), and tick labels on the Y axis
plt.tick_params(top='off', bottom='off', left='off', right='off', labelleft='off', labelbottom='on')

2
これのオブジェクト指向バージョンはax.tick_params()
MarceloVilla-Piñeros19年

1
また、offおよびの使用onは非推奨です。MatplotlibDeprecationWarning: Passing one of 'on', 'true', 'off', 'false' as a boolean is deprecated; use an actual boolean (True/False) instead.
MarceloVilla-Piñeros19年

0

すべての目盛りとラベルをオフにする短いコマンドを探している人は、

plt.tick_params(top=False, bottom=False, left=False, right=False, labelleft=False, labelbottom=False)

これはbool、バージョンmatplotlib> = 2.1.1以降の各パラメータのタイプを許可します

カスタムティック設定については、ドキュメントが役立ちます:

https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.tick_params.html

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.