ホーム>source

私は subs を理解しようとしています   LogLocator の引数  クラス。MatPlotLibグラフ上で大目盛り/小目盛りを配置する場所を決定します。

ここに私のコードがあります:

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import numpy as np
x = np.arange(30)
y = np.power(x, 1.5)
fig = plt.figure(1)
ax = fig.add_subplot(111)
ax.set_yscale("log")
ax.plot(x, y)
plt.show()

これにより、次のグラフが生成されます。

しかし、私がしたいのは、10 ^ 0、10 ^ 1、10 ^ 2ではなく、すべてのティックのy軸にラベルを付けることです。これを行う方法は、 LogLocator を使用することだと思います 、そして、私は私のコードに以下を挿入しようとしました:

ax.yaxis.set_major_locator(ticker.LogLocator(base=10, subs=np.arange(2, 10) * 0.1))

ここでの考え方は、0.1、0.2、0.3 ...のラベルを表示するということです。X10 ^ 0、10 ^ 1、10 ^ 3 ...

ただし、代わりに、グラフはすべてのラベルを完全に削除したように見えます。

だから私は subs で何を使うべきですか  私の望ましい行動を得るための議論?

あなたの答え
  • 解決した方法 # 1

    plt.plot() の後に次の行を追加するだけです 。対数間隔のために、小さな目盛りの間に少しスペースの問題があります。しかし、あなたは fontsize を介してそれを制御することができます  副目盛ラベルの。

    ax.yaxis.set_minor_formatter(FormatStrFormatter("%.1f"))
    
    

    出力

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ c++ - msvc 2015コンパイラでstd - : vector :: insertがstd :: copyより5倍速く動作するのはなぜですか?