1
matplotlibの対数y軸に素敵なティック(指数関数的でないスカラー)を描こうとしています。一般的に私は最初の値(この例では100
)をそこから取得したいと思っています。しかし、いくつかのケースでは、私は以下のような異なるティッカーを得る。私はこれをどう管理するかという手がかりを見つけませんでした。 matplotlibを特定の値で開始させ、その後自動的に感覚的なテロップを選択するという単純な方法はありますか(この例では120, 110, 100, 90, 80, 70, 60, 50, 40, 30, 20
がいいでしょう)。matplotlibの対数軸に目盛りを設定するには
マイコード:
from matplotlib.ticker import ScalarFormatter, MaxNLocator
x = range(11)
y = [ 100., 91.3700879 , 91.01104689, 58.91189746,
46.99501432, 55.3816625 , 37.49715841, 26.55818469,
36.34538328, 37.7811044 , 47.45953131]
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_yscale('log')
ax.yaxis.set_major_locator(MaxNLocator(nbins=11, steps=[1,2,3,4,5,6,7,8,9,10]))
ax.yaxis.set_major_formatter(ScalarFormatter())
ax.plot(x,y)
結果:
ありがとうございました。しかし、どのようにして妥当な最大値と最小値を任意の場合に計算すればよいのですか?また、上記の例では開始値(「100」)を考慮する方法を教えてください。私はあらかじめy値を知らない。それらは範囲[0、無限大[最小値は0に制限されていますが、最大値は制限されません(おそらく最大で数百万を超えません)。 – leofields
プロットする前に 'y'を設定する必要があります。したがって、 'max(y)'は最大値を与えます。次の10倍程度の倍数に丸めます。 –
それはあなたのために働くのですか? –