25

下の写真に示すように、x-tick 日付ラベルを目盛りの中心ではなく、目盛りの中心に配置したいと考えています。

ドキュメントを読みましたが、役に立ちませんでした。これを行う方法を知っている人はいますか?

ここに画像の説明を入力

役立つ場合は、x 軸の目盛りの書式設定に使用したすべてのものを次に示します。

day_fmt = '%d'   
myFmt = mdates.DateFormatter(day_fmt)
ax.xaxis.set_major_formatter(myFmt)    
ax.xaxis.set_major_locator(matplotlib.dates.DayLocator(interval=1))     

for tick in ax.xaxis.get_major_ticks():
    tick.tick1line.set_markersize(0)
    tick.tick2line.set_markersize(0)
    tick.label1.set_horizontalalignment('center')
4

3 に答える 3

2

ロケーターとフォーマッターを使用する代わりの方法を次に示します。ラベル間の任意の間隔に使用できます。

# tick_limit: the last tick position without centering (16 in your example)
# offset: how many steps between each tick (1 in your example)
# myticklabels: string labels, optional (range(1,16) in your example)

# need to set limits so the following works:
ax.xaxis.set_ticks([0, tick_limit]) 
# offset all ticks between limits:
ax.xaxis.set(ticks=np.arange(offset/2., tick_limit, offset), ticklabels=myticklabels)
# turn off grid
ax.grid(False)

これにより主目盛が変更されるため、アプリケーションによってはグリッドを調整する必要がある場合があります。)を使用してこれを回避することもできax.twinx()ます。これにより、ラベルが別の軸の反対側に移動しますが、元のグリッドは変更されず、2 つのグリッド (1 つは元の目盛り用、もう 1 つはオフセット用) になります。

編集:

等間隔の整数の目盛りを仮定すると、これはおそらく最も簡単な方法です。

ax.set_xticks([float(n)+0.5 for n in ax.get_xticks()])
于 2016-07-08T13:03:40.553 に答える