<p>使用DavidG发布的帖子中建议的小记号应该可以。下面是一个MWE,我根据您的具体问题进行了调整,强制在每个月的第一天显示主要刻度,并使用小刻度将标签放在主要刻度之间:</p>
<pre><code>import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import datetime
# Generate some data for example :
yr = 2014
fig, ax = plt.subplots()
x0 = datetime.datetime(yr, 1, 1)
x = np.array([x0 + datetime.timedelta(days=i) for i in range(365)])
y1 = np.sin(2*np.pi*np.arange(365)/365) + np.random.rand(365)/5
y2 = np.sin(2*np.pi*np.arange(365)/365) + np.random.rand(365)/5 - 1
# Draw high and low temperatures lines :
ax.plot(x, y1, color='#c83c34')
ax.plot(x, y2, color='#28659c')
ax.fill_between(x, y2, y1, facecolor='#daecfd', alpha=0.5)
# Force the major ticks position on the first of each month and hide labels:
xticks = [datetime.datetime(yr, i+1, 1) for i in range(12)]
xticks.append(datetime.datetime(yr+1, 1, 1))
ax.set_xticks(xticks)
ax.tick_params(axis='both', direction='out', top=False, right=False)
ax.axis([xticks[0], xticks[-1], -2.5, 1.5])
ax.set_xticklabels([])
# CODE GOES HERE TO CENTER X-AXIS LABELS...
labels = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
mticks = ax.get_xticks()
ax.set_xticks((mticks[:-1]+mticks[1:])/2, minor=True)
ax.tick_params(axis='x', which='minor', length=0)
ax.set_xticklabels(labels, minor=True)
fig.tight_layout()
plt.show()
</code></pre>
<p>结果是:
<a href="https://i.stack.imgur.com/PFDmp.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/PFDmp.png" alt="enter image description here"/></a></p>