滑块上的日期 Tick-marks (mm/dd)

Date Tick-marks (mm/dd) on Slider

我在情节中添加了一个滑块。

ax2 = fig.add_axes([.1, .01, .8, .05])
ax2_Slider = Slider(ax2, 'NormDate', valmin, valmax,  valstep=1, color='w', initcolor='none', track_color='g')
ax2_Slider.valtext.set_visible(False)

在 matplotlib 中,滑块值必须是浮点数,而不是日期。 因此我使用 date2num 来转换日期值。

leftDate = datetime.date.today()  - relativedelta(days=366)
valmin = mpl.dates.date2num(leftDate)
valmax = mpl.dates.date2num(datetime.date.today())

如何向滑块添加刻度线以显示 mm/dd? 还有如何添加显示所选日期的标题?

当然可以设置刻度标签。但为什么不同时显示实际日期呢?

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
from datetime import date, timedelta
from matplotlib.dates import date2num, num2date

#set figure layout
fig = plt.figure(figsize=(10, 5))
gs = fig.add_gridspec(2, 3, width_ratios=[1, 10, 1], height_ratios=[10, 1])

#main panel
ax1 = fig.add_subplot(gs[0, :])
#slider panel
ax2 = fig.add_subplot(gs[1, 1])
valmin = date2num(date.today()  - timedelta(days=366))
valmax = date2num(date.today())
ax2_Slider = Slider(ax2, 'NormDate', valmin, valmax,  valstep=1, color='w', initcolor='none', track_color='g')
#adding and formatting of the date ticks
ax2.add_artist(ax2.xaxis)
x_tick_nums=np.linspace(valmin, valmax, 10)
ax2.set_xticks(x_tick_nums, [num2date(s).strftime("%m-%d") for s in x_tick_nums])

#convert slider value to date
def changed_slider(s):
    ax2_Slider.valtext.set_text(num2date(s).date())
    #...
    #other things that should happen when the slider value changes 

#initiate the correct date display
changed_slider(valmin)
ax2_Slider.on_changed(changed_slider)

plt.show()

示例输出: