我在我的情節中添加了一個滑塊。
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?另外如何添加標題顯示選擇了哪個日期?
uj5u.com熱心網友回復:
當然,您可以設定刻度標簽。但為什么不同時顯示實際日期呢?
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()
樣本輸出:

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/430607.html
上一篇:渲染X軸刻度時的奇怪行為
