Пример #1
0
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)
Пример #2
0
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'})
Пример #3
0
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
Пример #4
0
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
Пример #5
0
    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)
Пример #6
0
    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')
Пример #7
0
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
Пример #8
0
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
Пример #9
0
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)
Пример #11
0
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
Пример #12
0
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),
    )
Пример #13
0
    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
Пример #14
0
 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)
Пример #15
0
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)
                 )
Пример #16
0
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)
Пример #17
0
    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)
Пример #18
0
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'))
Пример #19
0
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)))
Пример #20
0
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])
Пример #21
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
Пример #23
0
    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,
        )
Пример #24
0
    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):
Пример #25
0
    '''
    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,
                            )
Пример #26
0
    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)
Пример #27
0
]

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)
Пример #28
0
    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)
Пример #29
0
# 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()