回答:
または、matplotlibがティックを配置できるようにしながら(現在はでのみMaxNLocator
)ティック数を単純に設定したい場合はpyplot.locator_params
、
pyplot.locator_params(nbins=4)
以下で説明するように、このメソッドで特定の軸を指定できます。デフォルトは両方です。
# To specify the number of ticks on both or any single axes
pyplot.locator_params(axis='y', nbins=6)
pyplot.locator_params(axis='x', nbins=10)
numticks
代わりに機能しましたnbins
numticks
によって指摘された対数プロットのソリューションを追加していただけませんか?
[0, 1, ..., 99]
今1セットnticks=10
、そして新しいスパースラベルが長く離れて軸に沿って10回を置くことになる、すなわち、今1
どこに座って9
、だった2
ところ19
だった...と9
場所99
でした。
それでも誰かがこのページを検索結果に表示する場合:
fig, ax = plt.subplots()
plt.plot(...)
every_nth = 4
for n, label in enumerate(ax.xaxis.get_ticklabels()):
if n % every_nth != 0:
label.set_visible(False)
目盛りのカスタマイズと外観の問題を解決するには、matplotlib Webサイトの目盛りロケーターガイドを参照してください
ax.xaxis.set_major_locator(plt.MaxNLocator(3))
x軸の目盛りの総数を3に設定し、それを軸全体に均等に分散します。
これについての素晴らしいチュートリアルもあります
ax = df.plot()
pandas.DataFrame
日時インデックス[2019-01-01、... 2019-11-01]のdf()がある場合、を呼び出して ax = df.plot()
、Figureオブジェクトを返します。ax.xaxis.set_major_locator(plt.MaxNLocator(3))
最初の3つのインデックスのみを呼び出す[2019-01-01、2019-01-02、2019-01-03]。
df.plot()
しばしばを表示するminor_locator
ので、試してみてくださいax1.xaxis.set_minor_locator(plt.MaxNLocator(3))
。また3
、表示する目盛りの数をに置き換えてください。パンダimport matplotlib.dates as mdates
ax.xaxis.set_minor_locator(mdates.MonthLocator(interval = 1))
ax.xaxis.set_minor_formatter(mdates.DateFormatter('%m-%Y'))
set_ticks()
軸オブジェクトの関数があります。
get_xticks()
またはget_yticks()
最初に軸オブジェクトを呼び出し、必要に応じて編集してから、リストをに返すことができset_ticks()
ます。
set_ticks()
、私は持っset_xticks()
ていset_yticks()
ます。これらは軸ではなく、軸オブジェクトの属性です。たぶん、ここ数年でこれが変わったのでしょう。
誰かがまだそれを必要としている場合、ここでは実際には何も機能しなかったので、ティック数を正確にNに固定しながら、生成されたプロットの外観を「そのまま」保持する非常に簡単な方法を考え出しました。
import numpy as np
import matplotlib.pyplot as plt
f, ax = plt.subplots()
ax.plot(range(100))
ymin, ymax = ax.get_ylim()
ax.set_yticks(np.round(np.linspace(ymin, ymax, N), 2))
ax.set_yticks(np.linspace(int(ymin), int(ymax), N), 2)
@raphaelが与えた解決策は簡単で非常に役に立ちます。
それでも、表示される目盛りラベルは、元の分布からサンプリングされた値ではなく、によって返された配列のインデックスからサンプリングされた値になりますnp.linspace(ymin, ymax, N)
。
元の目盛りラベルから等間隔にN値を表示するには、set_yticklabels()
メソッドを使用します。以下は、整数ラベルのあるy軸のスニペットです。
import numpy as np
import matplotlib.pyplot as plt
ax = plt.gca()
ymin, ymax = ax.get_ylim()
custom_ticks = np.linspace(ymin, ymax, N, dtype=int)
ax.set_yticks(custom_ticks)
ax.set_yticklabels(custom_ticks)
対数スケールが使用されている場合、主目盛りの数は次のコマンドで修正できます
import matplotlib.pyplot as plt
....
plt.locator_params(numticks=12)
plt.show()
に設定されるnumticks
値は、表示される軸目盛りの数を決定します。
locator_params()
関数を紹介した@bgamariの投稿のクレジットですがnticks
、ログスケールが使用されている場合、パラメーターはエラーをスローします。
pyplot.locator_params(axis = 'x', nbins = 4)
(またはaxis = 'y'
)ことができるため、プロセスが非常に簡単になりました。@bgamariに感謝!