10

これは簡単なはずですが、方法がわかりません。

X軸に時間をプロットしています。時刻を示すマイナー ティックと日/月を示すメジャー ティックの 2 セットのティックを設定したいと考えています。だから私はこれを行います:

# set date ticks to something sensible:
xax = ax.get_xaxis()
xax.set_major_locator(dates.DayLocator())
xax.set_major_formatter(dates.DateFormatter('%d/%b'))

xax.set_minor_locator(dates.HourLocator(byhour=range(0,24,3)))
xax.set_minor_formatter(dates.DateFormatter('%H'))

これは目盛りに問題のないラベルを付けますが、主目盛りラベル (日/月) は小目盛りラベルの上に描画されます。

シグ。 波高アンサンブル時系列

大目盛りラベルを小目盛りの下にプロットするにはどうすればよいですか? DateFormatter に改行エスケープ文字 (\n) を入れてみましたが、垂直方向の間隔が正しくないため、不十分な解決策です。

アドバイスをいただければ幸いです。

4

1 に答える 1

20

キーワードでaxismethodを使用できます。次の例を比較してください。set_tick_params()pad

import datetime
import random
import matplotlib.pyplot as plt
import matplotlib.dates as dates

# make up some data
x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(100)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]

# plot
plt.plot(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()

ax = plt.gca()
# set date ticks to something sensible:
xax = ax.get_xaxis()
xax.set_major_locator(dates.DayLocator())
xax.set_major_formatter(dates.DateFormatter('%d/%b'))

xax.set_minor_locator(dates.HourLocator(byhour=range(0,24,3)))
xax.set_minor_formatter(dates.DateFormatter('%H'))
xax.set_tick_params(which='major', pad=15)

plt.show()

PS : この例はmoooeeeepから借用したものです


上記のスニペットがどのようにレンダリングされるかを次に示します。

ここに画像の説明を入力

于 2013-07-18T09:31:59.250 に答える