def _make_date_slider(dates): options = [pandas.Timestamp(d).strftime('%m/%d') for d in dates] return ipywidgets.SelectionRangeSlider( index=(0, len(dates) - 1), options=options, description='Dates', disabled=False, layout=ipywidgets.Layout(width='400px'), continuous_update=False)
def SearchDatesSlider(): options = [(' 1951 ', '1951-01-01'), (' SARS 2003 ', '2002-11-01'), (' H1N1 2009 ', '2009-04-01'), (' COVID 19 ', '2019-11-30'), (' 2020 ', '2020-12-31')] return widgets.SelectionRangeSlider(options=options, description='Dates', disabled=False, value=('2002-11-01', '2020-12-31'), layout={'width': '480px'})
def generate_slider(value, range_steps): slider = widgets.SelectionRangeSlider(options=[ i for i in range(range_steps[0], range_steps[1], range_steps[2]) ], index=(0, 30), description=value, disabled=False, continuous_update=False) return slider
def basic_buttons(hdbdata): """ Creates a widget box containing basic buttons to filter HDB results """ # https://blog.jupyter.org/introducing-templates-for-jupyter-widget-layouts-f72bcb35a662 # https://github.com/jupyter-widgets/ipywidgets/issues/1853#issuecomment-349201240 # Configure layout and set up widgets for plotly filterdict = { 'flat_model': widgets.SelectMultiple(options=hdbdata['flat_model'].unique(), value=list(hdbdata['flat_model'].unique()), description='Flat Model'), 'flat_type': widgets.SelectMultiple(options=hdbdata['flat_type'].unique(), value=list(hdbdata['flat_type'].unique()), description='Flat Type'), 'storey_range': widgets.SelectMultiple(options=hdbdata['storey_range'].unique(), value=list(hdbdata['storey_range'].unique()), description='Storeys'), 'floor_area_sqm': widgets.FloatRangeSlider(value=[ hdbdata['floor_area_sqm'].min(), hdbdata['floor_area_sqm'].max() ], min=hdbdata['floor_area_sqm'].min(), max=hdbdata['floor_area_sqm'].max(), step=1, description='Floor Area (sqm):', layout=Layout(width='100%')), 'remaining_lease': widgets.FloatRangeSlider(value=[ hdbdata['remaining_lease'].min(), hdbdata['remaining_lease'].max() ], min=hdbdata['remaining_lease'].min(), max=hdbdata['remaining_lease'].max(), step=1, description='Remaining Lease (years):', layout=Layout(width='100%')), 'month': widgets.SelectionRangeSlider( options=[(i, i) for i in hdbdata['month'].unique()], index=(0, hdbdata['month'].unique().size - 1), description='Date of transaction', layout=Layout(width='100%')) } h1 = HBox([ filterdict['flat_model'], filterdict['flat_type'], filterdict['storey_range'] ]) h2 = filterdict['floor_area_sqm'] h3 = filterdict['remaining_lease'] h4 = filterdict['month'] filter_widget = VBox([h1, h2, h3, h4]) return filterdict, filter_widget
def slider(self, multiplier=None, **kwargs): """Slider for interactive plotting. Based on the values in the ``r`` column, ``ipywidgets.SelectionRangeSlider`` is returned for navigating interactive plots. This method is based on ``ipywidgets.SelectionRangeSlider``, so any keyword argument accepted by it can be passed. Parameters ---------- multiplier : numbers.Real, optional ``multiplier`` can be passed as :math:`10^{n}`, where :math:`n` is a multiple of 3 (..., -6, -3, 0, 3, 6,...). According to that value, the values will be scaled and appropriate units shown. For instance, if ``multiplier=1e-9`` is passed, the slider points will be divided by :math:`1\\,\\text{nm}` and :math:`\\text{nm}` units will be used in the description. If ``multiplier`` is not passed, the optimum one is computed internally. Defaults to ``None``. Returns ------- ipywidgets.SelectionRangeSlider ``r`` range slider. Example ------- 1. Get the slider for the horizontal axis. >>> import discretisedfield as df ... >>> points = [(0, 0, 0), (2, 0, 0), (4, 0, 0)] >>> values = [(1, 0, 0), (0, 1, 0), (0, 0, 1)] # vector values >>> line = df.Line(points=points, values=values) >>> line.slider() SelectionRangeSlider(...) """ if multiplier is None: multiplier = uu.si_multiplier(self.length) values = self.data['r'].to_numpy() labels = np.around(values/multiplier, decimals=2) options = list(zip(labels, values)) slider_description = f'r ({uu.rsi_prefixes[multiplier]}m):' return ipywidgets.SelectionRangeSlider(options=options, value=(values[0], values[-1]), description=slider_description, **kwargs)
def __init__(self, list_of_metrics): self.metric_dropdown = widgets.Dropdown(options=list_of_metrics, description='Metric') self.plot_toggle = widgets.ToggleButtons( options=['Count', 'Change'], value='Count', description='', disabled=False, button_style='', tooltips=['Display absolute counts', 'Display change over time']) options = [(" Q{} {} ".format(qtr, year), (qtr, year)) for year in range(2005, 2016) for qtr in range(1, 5)] self.time_slider = widgets.SelectionSlider(options=options, description='Quarter', disabled=False, continuous_update=False, layout=Layout(width='60%')) self.time_range_slider = widgets.SelectionRangeSlider( options=options, index=(0, len(options) - 1), description='Time Range', disabled=False, layout=Layout(width='60%')) self.time_range_slider.layout.visibility = 'hidden' self.generate_button = widgets.Button(description='Generate Plot', disabled=False, tooltip='Generate Plot') self.panel_items = [ HBox([self.metric_dropdown]), HBox([self.plot_toggle]), VBox([self.time_slider, self.time_range_slider]), HBox([self.generate_button]) ] self.input_panel = VBox(self.panel_items) self.output = Output() def on_value_change(change): if change['new'] == 'Count': self.time_range_slider.layout.visibility = 'hidden' self.time_slider.layout.visibility = 'visible' elif change['new'] == 'Change': self.time_slider.layout.visibility = 'hidden' self.time_range_slider.layout.visibility = 'visible' self.plot_toggle.observe(on_value_change, names='value')
def dates_slider_control(properties): slider_dates = [ (date.strftime(' %Y-%m-%d '), date) for date in pd.date_range( properties['start_date'], properties['end_date'], freq='D') ] slider_index = (0, len(slider_dates) - 1) date_slider_control = widgets.SelectionRangeSlider( options=slider_dates, index=slider_index, description='Date Range', orientation='horizontal', layout={'width': '100%'}) return date_slider_control
def date_slider(start_date, end_date): dates = pd.date_range(start_date, end_date, freq='D') options = [(date.strftime(' %d/%m/%y '), date) for date in dates] index = (0, len(options) - 1) selection_range_slider = widgets.SelectionRangeSlider( options=options, index=index, description='Dates', orientation='horizontal', layout={'width': '500px'}) return selection_range_slider
def get_time_slider(df, timestamp_column='_timestamp'): def get_date_range(): timestamps = pd.to_datetime(df[timestamp_column]).apply( pd.Timestamp.date) vmin, vmax = timestamps.min(), timestamps.max() return pd.Series(pd.date_range(vmin, vmax)).apply(pd.Timestamp.date) date_range = get_date_range() return widgets.SelectionRangeSlider(options=date_range.values, description='Date Range', continuous_update=False, index=(0, len(date_range) - 1), values=(0, len(date_range)), layout=Layout(width='500px'))
def gui_date_picker(dates: list) -> widgets.SelectionRangeSlider: start_date = datetime.strptime(min(dates), '%Y%m%d') end_date = datetime.strptime(max(dates), '%Y%m%d') date_range = pd.date_range(start_date, end_date, freq='D') options = [(date.strftime(' %m/%d/%Y '), date) for date in date_range] index = (0, len(options) - 1) selection_range_slider = widgets.SelectionRangeSlider( options=options, index=index, description='Dates', orientation='horizontal', layout={'width': '500px'}) return (selection_range_slider)
def get_dates_widgets(options, index): monitoring_period_chooser = widgets.interactive(g, i=widgets.SelectionRangeSlider( options=options, index=index, description='Select the monitoring date range: ', style = {'description_width': 'initial'}, orientation='horizontal', layout={'width': '800px',"height":"50px"})) history_period_chooser = widgets.interactive(g, i=widgets.SelectionSlider( description="Start history period:", options = options, style = {'description_width': 'initial'})) return monitoring_period_chooser, history_period_chooser
def period_form_field(datetime_index, fmt="%d %b", value=None, **kwargs): kwargs = {"continuous_update": False, **kwargs} if value is not None: series = datetime_index.to_series() start, end = value start = series.loc[start][0] if start else datetime_index[0] end = series.loc[end][0] if end else datetime_index[-1] kwargs["value"] = (start, end) elif "index" not in kwargs: kwargs["index"] = (0, len(datetime_index) - 1) return ( "Periodo", widgets.SelectionRangeSlider(options=list( zip(datetime_index.strftime(fmt), datetime_index)), **kwargs), )
def __init__(self, start_datetime, end_datetime): self.start_datetime = start_datetime self.end_datetime = end_datetime dates = pd.date_range(start_datetime, end_datetime, freq='H') options = [(date.strftime('%m/%d %H:00'), date) for date in dates] index = (0, len(options) - 1) selection_range_slider = widgets.SelectionRangeSlider( options=options, index=index, description='', orientation='horizontal', layout={'width': '100%'}) selection_range_slider.observe(self.on_change) self.widget = selection_range_slider
def __make_widgets__(self): self.time_widget = widgets.SelectionRangeSlider( options=[0], continuous_update=False, layout={'width': '400px'}) #TODO rewrite to use just index not Begin Date self.date_widget = widgets.Dropdown(options=self.df_subset['Begin Date'].unique()) self.type_widget = widgets.ToggleButtons( options=['Detailled', 'Aggregate', 'Aggregate (percent)'], description='Plot Type', disabled=False, button_style='', # 'success', 'info', 'warning', 'danger' or '' tooltips=['A detailled plot of space occupancy over time.\ Only available for single-day selections.', 'A summary plot showing the total number of activities and total\ amount of time for each user type in the selection interval.', 'A summary plot showing the percentage of activities and percentage\ of time for each user type in the selection interval.'], ) self.weekday_widget = widgets.Select( options=['Specific Date/Time', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday', 'Weekdays', 'Weekends', 'All Data'], value='Specific Date/Time', style={'description_width': 'initial'}, description='Aggregation Type:', disabled=False ) self.download_button = widgets.Button( description='Download Data', button_style='', tooltip='Download Data', icon='download' ) def update(*args): """allows date selection to define time selection range""" #TODO rewrite to use just index not Begin Date index = self.df_subset[ self.df_subset['Begin Date'] == self.date_widget.value].index minutes = index.strftime('%I:%M%p').unique() self.time_widget.options = minutes self.time_widget.value = (minutes[0], minutes[-1]) self.date_widget.observe(update)
def crop_model(): start_date = dt.datetime(2014, 2, 1) end_date = dt.datetime(2014, 12, 1) dates = pd.date_range(start_date, end_date, freq='D') options = [(date.strftime(' %d %b '), date) for date in dates] index = (0, len(options) - 1) integration_slider = widgets.SelectionRangeSlider( options=options, index=index, description='Sowing & Harvest', orientation='horizontal', layout={'width': '600px'} ) year_widget = widgets.IntSlider(min=2010, max=2018, value=2015) widgets.interact(crop_model_func, year=year_widget, integration_time = integration_slider, epsilon = widgets.fixed(0.33) )
def cummulative_lai_plots(df): start_date = dt.datetime(2010, 1, 1) end_date = dt.datetime(2010, 12, 31) dates = pd.date_range(start_date, end_date, freq="D") options = [(date.strftime(" %d %b %Y "), date) for date in dates] index = (0, len(options) - 1) selection_range_slider = widgets.SelectionRangeSlider( options=options, index=index, description="Sowing & Harvest", orientation="horizontal", layout={"width": "600px"}, ) def plot_aggr_meteo(sowing_harvesting): sowing, harvesting = sowing_harvesting accum_lai(df, sowing, harvesting) widgets.interact_manual(plot_aggr_meteo, sowing_harvesting=selection_range_slider)
def make_viz(self): # Create controls # Initialize column type controller with demand fields = [] for k in list(self.KEY.keys()): if len([el for el in self.data.df.columns if self._matches(k, el) ]) > 0: fields.append(k) self.ctl_filter = widgets.Dropdown(options=fields + ["ALL"]) self.ctl_cols = widgets.Dropdown(options=sorted( [col for col in self.data.df.columns if self._matches("D", col)])) dates = pd.date_range(self.data.df.index[0], self.data.df.index[-1], freq="D") options = [(date.strftime(" %d/%m/%Y "), date) for date in dates] index = (0, len(options) - 1) self.ctl_date = widgets.SelectionRangeSlider( options=options, index=index, description="Dates", orientation="horizontal", continuous_update=False, layout=widgets.Layout(width="80%"), ) self.ctl_filter.observe(self._ctl_filter_handler, names=["value"]) self.ctl_cols.observe(self._ctl_cols_handler, names=["value"]) self.ctl_date.observe(self._ctl_date_handler, names=["value"]) self.input_widgets = widgets.VBox( [widgets.HBox([self.ctl_filter, self.ctl_cols]), self.ctl_date]) self.output = widgets.Output() # initalize plot before making it self._make_plot(self.ctl_cols.value, self.ctl_date.value)
def make_date_range_slider(start_date, end_date, freq='D'): from ipywidgets import interact, interactive, interaction, Label, Box, Layout import ipywidgets as iw from datetime import datetime # specify the date range from user input dates = pd.date_range(start_date, end_date, freq=freq) # specify formatting based on frequency code date_format_lib = {'D': '%m/%d/%Y', 'H': '%m/%d/%Y: %T'} freq_format = date_format_lib[freq] # creat options list and index for SelectionRangeSlider options = [(date.strftime(date_format_lib[freq]), date) for date in dates] index = (0, len(options) - 1) # # Create out function to display outputs (not needed?) # out = iw.Output(layout={'border': '1px solid black'}) # # @out.capture() # Instantiate the date_range_slider date_range_slider = iw.SelectionRangeSlider( options=options, index=index, description='Date Range', orientation='horizontal', layout={ 'width': '500px', 'grid_area': 'main' }, #layout=Layout(grid_area='main'), readout=True) # Save the labels for the date_range_slider as separate items date_list = [date_range_slider.label[0], date_range_slider.label[-1]] date_label = iw.Label(f'{date_list[0]} -- {date_list[1]}', layout=Layout(grid_area='header'))
def aggregate_plots(): start_date = dt.datetime(2010, 1, 1) end_date = dt.datetime(2010, 12, 31) dates = pd.date_range(start_date, end_date, freq='D') options = [(date.strftime(' %d %b %Y '), date) for date in dates] index = (0, len(options)-1) selection_range_slider = widgets.SelectionRangeSlider( options=options, index=index, description='Sowing & Harvest', orientation='horizontal', layout={'width': '600px'} ) def plot_aggr_meteo(sowing_harvesting, region_name, selected_years): sowing, harvesting = sowing_harvesting meteo_files = get_region_data_func(region_name, selected_years, do_plot=False) data = aggregate_meteo(meteo_files, sowing, harvesting, aggr=np.sum) fig, axs = plt.subplots(nrows=2, ncols=3, sharex=True, figsize=(12,12), squeeze=True) axs = axs.flatten() for i in range(6): axs[i].plot(data[:, 0], data[:, i + 1], '-o') axs[i].set_title(parameters[i]) fig.suptitle(region_name) widgets.interact_manual( plot_aggr_meteo, sowing_harvesting=selection_range_slider, region_name=widgets.Dropdown( options=regions, value='Central', description='Region:', disabled=False,), selected_years=widgets.IntRangeSlider(min=2010, max=2018, value=(2015,2016)))
dc.on_draw(handle_draw) m.add_control(dc) start_date = date(1950, 1, 1) end_date = date(2020, 1, 1) days = (end_date - start_date).days dates = [] for n_day in range(days): dates.append(start_date + timedelta(days=n_day)) dates = widgets.SelectionRangeSlider( value=(start_date, end_date - timedelta(days=1)), options=dates, description='Starting date', layout=widgets.Layout(width='90%') ) def on_button_clicked(_): global kw, df if coords: kw = get_data() df = run.ui_query(kw) if df.shape[0] == 0: msg = 'No data returned... select different filter criteria' else: df.dropna(subset=['tabledap'], inplace=True) msg = 'Found {} datasets'.format(df.shape[0])
def trade_review_in_notebook2(symbol=None, mkdata=None, period=1, executions: list = None, account=None, date_from=None, date_to=None, expand_offset=120, source='IB'): import ipywidgets as widgets from IPython.display import display from dateutil import parser import datetime as dt import talib import pandas as pd import mpl_finance as mpf if isinstance(expand_offset, tuple): s_offset = expand_offset[0] e_offset = expand_offset[1] else: s_offset = e_offset = expand_offset if account and date_from and symbol: # 在只填写accout与date_from的情况下,找出date_from当天,account中的所有交易记录 from KRData.IBData import IBTrade ibt = IBTrade(account) date_from = parser.parse(date_from) if isinstance(date_from, str) else date_from date_to = date_from + dt.timedelta(days=1) if date_to is None else ( parser.parse(date_to) if isinstance(date_to, str) else date_to) fills = ibt[date_from:date_to:symbol] if fills.count() < 1: raise Exception(f'账户:{account}在{date_from}-{date_to}不存在交易记录') conId = fills[0].contract.conId executions = [{ 'datetime': f.time.replace(second=0) + dt.timedelta(hours=8), 'price': f.execution.price, 'size': f.execution.shares, 'direction': 'long' if f.execution.side == 'BOT' else 'short' } for f in fills] executions.sort(key=lambda e: e['datetime']) start = executions[0]['datetime'] - dt.timedelta(minutes=s_offset) end = executions[-1]['datetime'] + dt.timedelta(minutes=e_offset) if source == 'IB': barTypeMap = { 1: '1 min', 5: '5 mins', 15: '15 mins', 30: '30 mins', 60: '1 hour' } mkdata = ibt._ib_market.get_bars_from_ib(conId, barType=barTypeMap.get( period, '1 min'), start=start, end=end) elif source == 'HK': from KRData.HKData import HKFuture hf = HKFuture() mkdata = hf.get_bars(symbol, start=start, end=end, ktype=f'{period}min', queryByDate=False) del hf del ibt elif mkdata is None and symbol: # 在只填写execution的情况下,自动根据source获取数据 start = executions[0]['datetime'] - dt.timedelta(minutes=s_offset) end = executions[-1]['datetime'] + dt.timedelta(minutes=e_offset) if source == 'IB': from KRData.IBData import IBMarket ibm = IBMarket() barTypeMap = { 1: '1 min', 5: '5 mins', 15: '15 mins', 30: '30 mins', 60: '1 hour' } mkdata = ibm.get_bars_from_ib(symbol, barType=barTypeMap.get( period, '1 min'), start=start, end=end) del ibm elif source == 'HK': from KRData.HKData import HKFuture hf = HKFuture() mkdata = hf.get_bars(symbol, start=start, end=end, ktype=f'{period}min', queryByDate=False) del hf mkdata = _concat_executions(mkdata, executions) mkdata['ma5'] = talib.MA(mkdata['close'].values, timeperiod=5) mkdata['ma10'] = talib.MA(mkdata['close'].values, timeperiod=10) mkdata['ma30'] = talib.MA(mkdata['close'].values, timeperiod=30) mkdata['ma60'] = talib.MA(mkdata['close'].values, timeperiod=60) symbolWidget = widgets.Text(value=str(symbol), description='symbol', disable=True) fromWidget = widgets.Text(value='', placeholder='yyyymmdd HH:MM:SS', description='From:', disabled=True) toWidget = widgets.Text(value='', placeholder='yyyymmdd HH:MM:SS', description='To:', disabled=True) time_range_box = widgets.HBox([fromWidget, toWidget]) annotate = widgets.Checkbox(value=False, description='annotate') offsetWidget = widgets.IntSlider(min=0, max=500, step=10, value=60, description='expand_offset') executionSelection = widgets.SelectionRangeSlider( options=[(str(_e['datetime']), _e['datetime']) for _e in executions], index=(0, len(executions) - 1), description='execution', disabled=False, continuous_update=False, ) fig = None def save_fig(b): if fig is not None: try: fig.savefig('fig.png') except Exception as e: print('errSaveFig:', e) saveFigButton = widgets.Button(description='保存图片') saveFigButton.on_click(save_fig) def show_data(e_select, offset, annotate): nonlocal fig s = e_select[0] - dt.timedelta(minutes=offset) e = e_select[-1] + dt.timedelta(minutes=offset) fromWidget.value = str(s) toWidget.value = str(e) temp_mkdata = mkdata[s:e] fig = draw_klines(temp_mkdata, annotate=annotate) params = { 'e_select': executionSelection, 'offset': offsetWidget, 'annotate': annotate } out = widgets.interactive_output(show_data, params) display(symbolWidget, time_range_box, annotate, executionSelection, offsetWidget, saveFigButton, out)
widgets.SelectionSlider( options=['scrambled', 'sunny side up', 'poached', 'over easy'], value='sunny side up', description='I like my eggs ...', disabled=False, continuous_update=False, orientation='horizontal', readout=True) # SelectionRangeSlider import datetime dates = [datetime.date(2015, i, 1) for i in range(1, 13)] options = [(i.strftime('%b'), i) for i in dates] widgets.SelectionRangeSlider(options=options, index=(0, 11), description='Months (2015)', disabled=False) # ToggleButtons widgets.ToggleButtons( options=['Slow', 'Regular', 'Fast'], description='Speed:', disabled=False, button_style='', # 'success', 'info', 'warning', 'danger' or '' tooltips=[ 'Description of slow', 'Description of regular', 'Description of fast' ], # icons=['check'] * 3 ) # SelectMultiple
def slider(self, x=None, multiplier=None, description=None, **kwargs): """Slider for interactive plotting. Based on the values in the independent variable column, ``ipywidgets.SelectionRangeSlider`` is returned for navigating interactive plots. This method is based on ``ipywidgets.SelectionRangeSlider``, so any keyword argument accepted by it can be passed. Parameters ---------- x : str, optional Independent variable. Defaults to ``None``. multiplier : numbers.Real, optional ``multiplier`` can be passed as :math:`10^{n}`, where :math:`n` is a multiple of 3 (..., -6, -3, 0, 3, 6,...). According to that value, the values will be scaled and appropriate units shown. For instance, if ``multiplier=1e-9`` is passed, the slider points will be divided by :math:`1\\,\\text{ns}` and :math:`\\text{ns}` units will be used in the description. If ``multiplier`` is not passed, the optimum one is computed internally. Defaults to ``None``. description : str Slider description. Defaults to ``None``. Returns ------- ipywidgets.SelectionRangeSlider Independent variable slider. Example ------- 1. Get slider for the independent variable. >>> import os >>> import ubermagtable as ut ... >>> odtfile = os.path.join(os.path.dirname(__file__), ... 'tests', 'test_sample', ... 'oommf-old-file1.odt') >>> table = ut.Table.fromfile(odtfile, x='t') >>> table.slider() SelectionRangeSlider(...) """ if x is None and self.x is not None: x = self.x if x not in self.data.columns: msg = f"Independent variable {x=} is not in table." raise ValueError(msg) if multiplier is None: multiplier = ubermagutil.units.si_multiplier(self.xmax) values = self.data[self.x].to_numpy() labels = np.around(values / multiplier, decimals=2) options = list(zip(labels, values)) if x == "t": units = f" ({ubermagutil.units.rsi_prefixes[multiplier]}s)" else: units = "" if description is None: description = f"{x}{units}:" return ipywidgets.SelectionRangeSlider( options=options, value=(values[0], values[-1]), description=description, **kwargs, )
max=hdbdata['floor_area_sqm'].max(), step=1, description='Floor Area (sqm):', layout=Layout(width='100%') ), 'remaining_lease': widgets.FloatRangeSlider( value=[hdbdata['remaining_lease'].min(), hdbdata['remaining_lease'].max()], min=hdbdata['remaining_lease'].min(), max=hdbdata['remaining_lease'].max(), step=1, description='Remaining Lease (years):', layout=Layout(width='100%') ), 'year': widgets.SelectionRangeSlider( options=[(i,i) for i in hdbdata['year'].unique()], index=(0, hdbdata['year'].unique().size-1), description='Year of transaction', layout=Layout(width='100%') ) } # https://blog.jupyter.org/introducing-templates-for-jupyter-widget-layouts-f72bcb35a662 # https://github.com/jupyter-widgets/ipywidgets/issues/1853#issuecomment-349201240 # Configure layout and set up widgets for plotly h1 = HBox([filterdict['flat_model'], filterdict['flat_type'], filterdict['storey_range']]) h2 = filterdict['floor_area_sqm'] h3 = filterdict['remaining_lease'] h4 = filterdict['year'] filter_widget = VBox([h1,h2,h3,h4]) # Filter data def filter_HDB(flat_model, flat_type, storey_range, floor_area_sqm, remaining_lease, year):
''' display(Markdown(description)) states = list(datadic.state_to_abbrev.keys()) state_w = widgets.Dropdown( options=states, value='Maine', description='State', disabled=False ) options = list(range(100)) age_w = widgets.SelectionRangeSlider( options=options, index=(18,75), description='Age', disabled=False ) fulltime_w = widgets.IntSlider(description='Fulltime' , value = 40) min_hours_w = widgets.IntSlider(description='Min hours' , value = 15) options = ['Abilities', 'Skills','Knowledge', 'Interests', 'Work Activities', 'Technology Skills', 'Education, Training, and Experience','Tools and Technology', 'Task Ratings', 'Work Context', 'Tools Used','Work Styles','Work Values'] X_label_w = widgets.Dropdown( options=options, value = options[0], description='Variables', disabled=False, )
def __init__(self, statefp, list_of_metrics, count_qry, change_qry): self.engine = create_engine('postgresql://@10.10.2.10/appliedda') qry = "SELECT countyfp, name, ST_Transform(geom, 102698) geom FROM tl_2016_us_county WHERE statefp = '{}'".format(statefp) self.counties = gpd.read_postgis(qry, self.engine, geom_col='geom') self.counties['coords'] = self.counties.geometry.apply(lambda x: x.representative_point().coords[0]) self.count_qry = count_qry self.change_qry = change_qry self.metric_dropdown = widgets.Dropdown( options=list_of_metrics, description='Metric' ) self.plot_toggle = widgets.ToggleButtons( options=['Count', 'Change'], value='Count', description='', disabled=False, button_style='', tooltips=['Display absolute counts', 'Display change over time'] ) options = [(" Q{} {} ".format(qtr, year), (qtr,year)) for year in range(2005,2016) for qtr in range(1,5)] self.time_slider = widgets.SelectionSlider( options=options, description='Quarter', disabled=False, continuous_update=False, layout=Layout(width='60%') ) self.time_range_slider = widgets.SelectionRangeSlider( options=options, index=(0,len(options)-1), description='Time Range', disabled=False, layout=Layout(width='60%') ) self.time_range_slider.layout.visibility = 'hidden' self.generate_button = widgets.Button( description='Generate Plot', disabled=False, tooltip='Generate Plot' ) self.panel_items = [ HBox([self.metric_dropdown]), HBox([self.plot_toggle]), VBox([self.time_slider, self.time_range_slider]), HBox([self.generate_button]) ] self.input_panel = VBox(self.panel_items) self.output = Output() def on_value_change(change): if change['new'] == 'Count': self.time_range_slider.layout.visibility = 'hidden' self.time_slider.layout.visibility = 'visible' elif change['new'] == 'Change': self.time_slider.layout.visibility = 'hidden' self.time_range_slider.layout.visibility = 'visible' self.plot_toggle.observe(on_value_change, names='value') def run_query(): # Get toggle value to determine which plot type to use plot_type = self.plot_toggle.value # Set query for either Count or Change if plot_type == 'Count': qry = self.count_qry.format(q=self.time_slider.value[0], y=self.time_slider.value[1]) elif plot_type == 'Change': qry = self.change_qry.format(q0=self.time_range_slider.value[0][0], y0=self.time_range_slider.value[0][1], q1=self.time_range_slider.value[1][0], y1=self.time_range_slider.value[1][1]) # Run the query and return the Dataframe return pd.read_sql(qry, self.engine) def generate_plot(button_obj): self.output.clear_output() with self.output: # Configure plot settings sns.set_style('white') f, ax = plt.subplots(1, figsize=(6,8)) ax.axis('off') # Plot basemap so counties with no data appear hatched self.counties.plot(ax=ax, edgecolor='black', color='lightgray', hatch='//') # Query and merge data with county shapefile df = run_query() cnty_df = pd.merge(self.counties, df, left_on=['countyfp'], right_on=['cnty']) # Get metric of interest from dropdown metric = self.metric_dropdown.value # Exception for zero counts if self.plot_toggle.value == 'Count': cnty_df = cnty_df[cnty_df[metric] > 0] # If no counties data, show empty map and return if len(cnty_df) == 0: plt.show() return # Plot county data if self.plot_toggle.value == 'Count': colmap = sns.cubehelix_palette(8, start=2.9, rot=0, dark=.1, light=.95, as_cmap=True) cnty_df.plot(metric, ax=ax, legend=True, edgecolor='black', cmap=colmap) elif self.plot_toggle.value == 'Change': metric = 'change_in_{}_pct'.format(metric) bound = cnty_df[metric].abs().max() colmap = sns.diverging_palette(10, 150, center='light', as_cmap=True) cnty_df.plot(metric, ax=ax, legend=True, edgecolor='black', cmap=colmap, vmax=bound, vmin=bound*-1) # Show plot plt.show() self.generate_button.on_click(generate_plot)
] exp_name_ = widgets.ToggleButtons(options=exp_names_, description='exp name:', disabled=False) domain_ = widgets.ToggleButtons(options=['H36M', 'MPII'], description='domain:', disabled=False) mode_ = widgets.ToggleButtons(options=['train', 'val'], description='mode:', disabled=False) loss_map_ = {'Pose Regression': 'pr', 'Domain Confusion': 'dd'} loss_type_ = widgets.ToggleButtons( options=['Pose Regression', 'Domain Confusion'], description='loss type:', disabled=False) max_x = 100000 step = 50 slices_ = widgets.SelectionRangeSlider(options=list( (range(0, max_x + step)))[0::step], index=[0, max_x // step], description='x range: ', disabled=False) do_aver_ = widgets.ToggleButtons(options=['do averaging', 'raw batch losses'], description='aver:', disabled=False)
def __init__(self): self.out = widgets.Output(layout={'border': '1px solid black'}) self.iceflow = IceflowClient() self.last_orders = None self.current_projection = 'north' self.clear = True self.controls = [] self.credentials = None self.start_date = datetime(1993, 1, 1) self.end_date = datetime.now() slider_dates = [(date.strftime(' %Y-%m-%d '), date) for date in pd.date_range(datetime(1993, 1, 1), datetime.now(), freq='D')] slider_index = (0, len(slider_dates) - 1) self.username = widgets.Text( value='', description='User:'******'Your NASA EarthData username ', disabled=False ) self.password = widgets.Password( value='', placeholder='Enter password', description='Password:'******'', description='Email:', placeholder='Your EarthData e-mail', disabled=False ) self.credentials_button = widgets.Button(description='Set Credentials', ) self.projection = widgets.Dropdown( options=['global', 'south', 'north'], description='Hemisphere:', disabled=False, value='north' ) self.dataset = widgets.SelectMultiple( options=['ATM1B', 'GLAH06', 'ILVIS2'], value=['ATM1B'], rows=4, description='Datasets', disabled=False ) self.itrf = widgets.Dropdown( options=[None, 'ITRF2000', 'ITRF2008', 'ITRF2014'], disabled=False, description='ITRF:', layout={'width': 'max-content', 'display': 'flex', 'description_width': 'initial'} ) self.epoch = widgets.Text( value='', description='Epoch:', placeholder='i.e. 2008.1', disabled=False ) self.is2 = widgets.Dropdown( options=['None', 'ATL03', 'ATL06', 'ATL07', 'ATL08'], description='ICESat 2:', disabled=False, ) self.dates_range = widgets.SelectionRangeSlider( options=slider_dates, index=slider_index, continuous_update=False, description='Date Range', orientation='horizontal', layout={'width': '90%'}) self.granule_count = widgets.Button(description="Get Raw Granule Count", display='flex', flex_flow='column', align_items='stretch', ) self.granule_count.style.button_color = 'lightgreen' self.granule_count.layout.width = 'auto' self.print_parameters = widgets.Button(description="Print Current Parameters", display='flex', flex_flow='column', align_items='stretch', ) self.print_parameters.style.button_color = 'lightgreen' self.print_parameters.layout.width = 'auto' self.post_order = widgets.Button(description="Place Data Order", display='flex', flex_flow='column', align_items='stretch', ) self.post_order.style.button_color = 'lightblue' self.post_order.layout.width = 'auto' self.check_order_status = widgets.Button(description="Order status", display='flex', flex_flow='column', align_items='stretch', ) self.check_order_status.style.button_color = 'lightblue' self.check_order_status.layout.width = 'auto' self.download_button = widgets.Button(description="Download completed orders", display='flex', flex_flow='column', align_items='stretch', ) self.download_button.style.button_color = 'lightblue' self.download_button.layout.width = 'auto' self.selection_buttons = widgets.HBox([self.granule_count, self.print_parameters, self.post_order, self.check_order_status, self.download_button]) self.selection_controls = widgets.VBox([self.projection, self.dataset, self.itrf, self.epoch, self.is2, self.dates_range, self.selection_buttons]) self.controls.append(self.selection_controls) self.layers_control = LayersControl(position='topright') # Map Components place_marker = Marker(icon=AwesomeIcon(name="check", marker_color='green', icon_color='darkgreen')) self.search_control = SearchControl( position="topleft", url='https://nominatim.openstreetmap.org/search?format=json&q={s}', zoom=5, marker=place_marker ) self.dc = DrawControl( circlemarker={}, polyline={}, rectangle={ "shapeOptions": { "fillColor": "#cc00cc", "color": "#cc00cc", "fillOpacity": 0.5 } }) self.file_upload = widgets.FileUpload( accept='.json,.geojson,.shp', multiple=False # True to accept multiple files upload else False ) # Now we are going to link the controls to the relevant events self.dates_range.observe(self.dates_changed, 'value') self.projection.observe(self.hemisphere_change) self.credentials_button.on_click(self.set_credentials) self.granule_count.on_click(self.query_cmr) self.print_parameters.on_click(self.get_parameters) self.post_order.on_click(self.place_data_orders) self.check_order_status.on_click(self.order_statuses) self.download_button.on_click(self.download_orders)
# Nodeidt listaan nodeIds = [] nodeIds.append("All") for i in range(32): nodeIds.append(i + 1) start_date = widgets.DatePicker(value=pd.to_datetime('2020-05-01'), description='Starting Date', layout=Layout(margin='0px 0px 0px 0px')) end_date = widgets.DatePicker(value=pd.to_datetime('2020-11-01 23:00:00'), description='Ending Date') tunnit = widgets.SelectionRangeSlider(options=list(range(8, 23)), index=[0, 14], description='Tunnit', disabled=False, value=[8, 22]) def sort_by_widgets(df, start_date=start_date, end_date=end_date, tunnit=tunnit): # Sortaa pvm:s df = df.loc[df["timestamp"] >= pd.to_datetime(start_date.value)] df = df.loc[df["timestamp"] < pd.to_datetime(end_date.value)] # Sorttaa tunnit df = df.loc[
] # date_time_obj = [datetime.datetime.strptime(date, '%d/%m/%Y').date() for date in date_list] from datetime import datetime start_date = datetime(2012, 1, 1) end_date = datetime(2012, 10, 31) dates = pd.date_range(start_date, end_date, freq='D') options = [(date.strftime(' %d %b %Y '), date) for date in dates] index = (0, len(options) - 1) selection_range_slider = widgets.SelectionRangeSlider( options=options, index=index, description='Date', orientation='horizontal', layout={'width': '500px'}) # selection_range_slider import datetime def print_date_range(date_range): time_stamp = date_range[1] day_time = time_stamp.to_pydatetime() day = day_time.date()