Observação
Clique aqui para baixar o código de exemplo completo
Centralizando rótulos entre marcas #
Ticklabels são alinhados em relação ao seu tick associado. O alinhamento 'center', 'left' ou 'right' pode ser controlado usando a propriedade de alinhamento horizontal:
for label in ax.get_xticklabels():
label.set_horizontalalignment('right')
No entanto, não há uma maneira direta de centralizar os rótulos entre os carrapatos. Para fingir esse comportamento, pode-se colocar um rótulo nos ticks menores entre os ticks principais e ocultar os rótulos dos ticks principais e secundários.
Aqui está um exemplo que rotula os meses, centralizados entre os ticks.

import numpy as np
import matplotlib.cbook as cbook
import matplotlib.dates as dates
import matplotlib.ticker as ticker
import matplotlib.pyplot as plt
# Load some financial data; Google's stock price
r = (cbook.get_sample_data('goog.npz', np_load=True)['price_data']
.view(np.recarray))
r = r[-250:] # get the last 250 days
fig, ax = plt.subplots()
ax.plot(r.date, r.adj_close)
ax.xaxis.set_major_locator(dates.MonthLocator())
# 16 is a slight approximation since months differ in number of days.
ax.xaxis.set_minor_locator(dates.MonthLocator(bymonthday=16))
ax.xaxis.set_major_formatter(ticker.NullFormatter())
ax.xaxis.set_minor_formatter(dates.DateFormatter('%b'))
# Remove the tick lines
ax.tick_params(axis='x', which='minor', tick1On=False, tick2On=False)
# Align the minor tick label
for label in ax.get_xticklabels(minor=True):
label.set_horizontalalignment('center')
imid = len(r) // 2
ax.set_xlabel(str(r.date[imid].item().year))
plt.show()