はじめに
機密事項等の関わりでグラフの軸の情報を消さなければならないということは,企業に関わるプロジェクトでは散見されるのではないでしょうか.
今回logスケールの目盛を消そうとしたのですが,情報が少なく調べるのに時間がかかってしまったので備忘録の意味も含め記事化しました.
結論
logスケールのグラフにおいて目盛を消すには,追加のキーワード引数の設定が必要となります.
ax.tick_params(which="both", left=False)
whichの部分が追加で必要となる引数です.leftの部分は[top, bottom, right, left]の中から消したい軸目盛の位置を指定します.
なぜ追加オプションが必要なのか?
適当なデータを生成してオプションの有無を比較します.以下のサンプルデータを生成し,プロットをおこなうコードを実行します.
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")
グラフは以下のようになります.
ax.set_yscale("log")
により,y軸がlogスケールになり,対応して目盛が変化していることがわかります.
ここで先程のコードの最後に目盛を消すためにax.tick_params(left=False)
を追記して実行すると,以下のようなグラフが得られます.
一見何も変わっていないように見えますが,軸ラベルが振られている箇所の目盛が消えています.ラベル間にある細かい目盛は消えていません.
これは,logスケールのグラフではmajor
,minor
の2つの軸を利用していますが,ax.tick_params
におけるキーワード引数which
のデフォルト値はmajor
になっているからです.
したがってmajor
,minor
の2つの軸を対象とするように指定するax.tick_params(left=False, which="both")
のようにすると,軸目盛をすべて消すことができます.結果は以下の図のとおりです.
まとめ
matplotlibにおいて,logスケールのグラフはmajor
,minor
の2つの軸を使用しているため,追加オプションが必要となっています.
参考