滑块上的日期 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()
示例输出:
我在情节中添加了一个滑块。
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()
示例输出: