Загрузка диаграммы с виджетом даты внутри класса Python
Я попытался создать класс Python, который должен загружать диаграмму и взаимодействовать с виджетом даты. К сожалению, я мог загрузить только диаграмму или диаграмму и виджет без взаимодействия.
Идея состоит в том, чтобы настроить красную рамку / прямоугольник на диаграмме в соответствии с выбранным диапазоном дат (в виджете).
Последний код, над которым я работал, следующий:
class ChartsPropylene():
def __init__(self):
self.start_date = datetime(2008, 4, 24)
self.end_date = datetime(2020, 5, 24)
self.dates = pd.date_range(start_date, end_date, freq='D')
self.options = [(date.strftime(' %d %b %y '), date) for date in dates]
self.index = (0, len(options)-1)
selection_range_slider = widgets.SelectionRangeSlider(
options=self.options,
index=self.index,
description='Dates',
orientation='horizontal',
layout={'width': '600px'}
)
display(selection_range_slider)
def __printChart__(self,selection_range_slider):
x = selection_range_slider.get_interact_value()[0].toordinal()
y = selection_range_slider.get_interact_value()[1].toordinal()
abs1 = abs(y-x)
plt.figure(figsize=(18,10))
sns.set(style="darkgrid")
palette2 = sns.color_palette("mako_r", 3)
sns.lineplot(x="Date", y="Value", hue='Std_Type', style='Value_Type', sizes=(.25, 2.5), ci='sd', estimator=None, lw=1, palette = palette2, data=tbl4)
rectangle1 = plt.Rectangle(xy=(x, 500), width=abs1, height=500, linewidth=2,
color='red', facecolor='blue',
joinstyle='round', alpha=0.1, fill=True)
rectangle2 = plt.Rectangle(xy=(x, 500), width=abs1, height=500, linewidth=2,
color='red', facecolor='blue',
joinstyle='round', alpha=1, fill=False)
plt.gca().add_patch(rectangle1)
plt.gca().add_patch(rectangle2)
plt.show()
def __loadChart__(self):
widgets.interact(
self.__printChart__(selection_range_slider),
selection_range_slider = selection_range_slider
)
ChartsPropylene().__loadChart__()
Обзор данных следующий:
>tbl4.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2214 entries, 0 to 2213
Data columns (total 4 columns):
Date 2214 non-null datetime64[ns]
Value_Type 2214 non-null object
Std_Type 2214 non-null object
Value 2214 non-null float64
dtypes: datetime64[ns](1), float64(1), object(2)
> tbl4.head(20)
Date Value_Type Std_Type Value
0 2006-01-06 mid_value Mid 837.76
1 2006-01-13 mid_value Mid 821.22
2 2006-01-20 mid_value Mid 903.89
3 2006-01-27 mid_value Mid 914.92
4 2006-02-03 mid_value Mid 942.48
5 2006-02-10 mid_value Mid 981.06
6 2006-02-17 mid_value Mid 970.03
7 2006-02-24 mid_value Mid 975.54
8 2006-03-03 mid_value Mid 975.54
9 2006-03-10 mid_value Mid 975.54
10 2006-03-17 mid_value Mid 975.54
11 2006-03-24 mid_value Mid 975.54
12 2006-03-31 mid_value Mid 975.54
13 2006-04-07 mid_value Mid 928.70
14 2006-04-14 mid_value Mid 928.70
15 2006-04-21 mid_value Mid 928.70
16 2006-04-28 mid_value Mid 961.77
17 2006-05-05 mid_value Mid 1036.17
18 2006-05-12 mid_value Mid 1069.24
19 2006-05-19 mid_value Mid 1069.24
Результат, который я получил, следующий (виджет появляется, но не взаимодействует с диаграммой - красный квадрат / прямоугольник):
Вы можете помочь мне это исправить?