1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

matplotlibでlogスケールのグラフの目盛を消す方法

Posted at

はじめに

機密事項等の関わりでグラフの軸の情報を消さなければならないということは,企業に関わるプロジェクトでは散見されるのではないでしょうか.
今回logスケールの目盛を消そうとしたのですが,情報が少なく調べるのに時間がかかってしまったので備忘録の意味も含め記事化しました.

結論

logスケールのグラフにおいて目盛を消すには,追加のキーワード引数の設定が必要となります.

ax.tick_params(which="both", left=False)

whichの部分が追加で必要となる引数です.leftの部分は[top, bottom, right, left]の中から消したい軸目盛の位置を指定します.

なぜ追加オプションが必要なのか?

適当なデータを生成してオプションの有無を比較します.以下のサンプルデータを生成し,プロットをおこなうコードを実行します.

sample1.py
import matplotlib.pyplot as plt
import numpy as np

a = np.logspace(1, 10, 50, base=2)
fig, ax = plt.subplots()
ax.plot(a)
ax.set_yscale("log")

グラフは以下のようになります.
download.png
ax.set_yscale("log")により,y軸がlogスケールになり,対応して目盛が変化していることがわかります.

ここで先程のコードの最後に目盛を消すためにax.tick_params(left=False)を追記して実行すると,以下のようなグラフが得られます.
download-1.png
一見何も変わっていないように見えますが,軸ラベルが振られている箇所の目盛が消えています.ラベル間にある細かい目盛は消えていません.
これは,logスケールのグラフではmajorminorの2つの軸を利用していますが,ax.tick_paramsにおけるキーワード引数whichのデフォルト値はmajorになっているからです.

したがってmajorminorの2つの軸を対象とするように指定するax.tick_params(left=False, which="both")のようにすると,軸目盛をすべて消すことができます.結果は以下の図のとおりです.
download-2.png

まとめ

matplotlibにおいて,logスケールのグラフはmajorminorの2つの軸を使用しているため,追加オプションが必要となっています.

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?