У меня есть несколько графиков данных в зависимости от времени следующим образом:

Например, на этот раз серия начинается с 2003.01 и заканчивается до 2007.01. Я не знаю, почему Matplotlib решил поместить метки в случайное место, которое не очень удобно для чтения временной серии. Я хочу, чтобы в начале каждого временного ряда был символ, а затем еще раз в начале каждого года.
Я не могу использовать трюк «xlim», потому что у меня около 1000 разных сюжетов.
Вот код, который я сейчас использую
matplotlib.rcParams['text.latex.preamble']=[r"\usepackage{amsmath}"]
plt.style.use('fivethirtyeight')
def to_inch(cm):
return cm/2.54
rc('figure', **{
"facecolor": "white",
"figsize": (to_inch(11.7), to_inch(8.27),)
})
rc('text', usetex=False)
font = {
'family': 'serif',
'serif': ['Computer Modern'],
'size': 8
}
rc('font', **font)
labelsize = 6
linewidth = 0.5
axes = {
'labelsize': labelsize,
"edgecolor": '#cbcbcb',
"linewidth": linewidth,
"facecolor": "white"
}
rc("grid", **{"linewidth": linewidth})
rc('axes', **axes)
rc('legend', **{'fontsize': 5})
rc('xtick', **{"labelsize": labelsize})
rc('ytick', **{"labelsize": labelsize})
nc = Dataset("o_gg.nc", 'r+')
#Get time
time = num2date(nc.variables['time'[:],getattr(nc.variables['time'],'units'))
time_ctr_ch = np.array([ xx-dt.timedelta(hours=12,minutes=15) for xx in time])
ctr_chtessel_soil = nc.variables['SoilMoist'][:,:,0,0]
plt.plot(time_ctr_ch, ctr_chtessel_soil, c='lightsteelblue', linewidth=0.5