Exemplo n.º 1
0
def update_aggregate_data(date, countries, ships, selectedDataMain):
    funcs = ['by_date', 'by_country', 'by_name', 'by_longitude', 'by_latitude']
    columns = ['date', 'pays', 'nom', 'longitude', 'latitude']
    date = Utils.value_to_date(datetime.now(), date)
    index = fi.by_value(ship_df, [date, countries, ships], funcs, columns)
    df1 = ship_df[index]
    if not (selectedDataMain is None) and not (len(selectedDataMain['points'])
                                               == 0):
        min_longitude = min([
            selectedDataMain['points'][i]['lon']
            for i in range(len(selectedDataMain['points']))
        ])
        max_longitude = max([
            selectedDataMain['points'][i]['lon']
            for i in range(len(selectedDataMain['points']))
        ])
        min_latitude = min([
            selectedDataMain['points'][i]['lat']
            for i in range(len(selectedDataMain['points']))
        ])
        max_latitude = max([
            selectedDataMain['points'][i]['lat']
            for i in range(len(selectedDataMain['points']))
        ])
        df2 = df1[(df1['longitude'] <= max_longitude)
                  & (df1['longitude'] >= min_longitude)
                  & (df1['latitude'] <= max_latitude)
                  & (df1['latitude'] >= min_latitude)]
        ships = list(df2['nom'])
        longitudes = df2["longitude"]
        latitudes = df2["latitude"]
        longitudes_span = [min(longitudes), max(longitudes)]
        latitudes_span = [min(latitudes), max(latitudes)]
        index = fi.by_value(
            ship_df, [date, countries, ships, longitudes_span, latitudes_span],
            funcs, columns)
    return index
Exemplo n.º 2
0
def make_count_figure(dates, countries, ships, selectedData):

    layout_count = copy.deepcopy(layout)
    funcs = ['by_country', 'by_name']
    columns = ['pays', 'nom']

    df = ship_df.copy()
    if not (selectedData is None) and not (len(selectedData['points']) == 0):
        df = df[(df['longitude'] == selectedData['points'][0]['lon'])
                & (df['latitude'] == selectedData['points'][0]['lat'])]
        ships = list(df['nom'])
        # index = fi.by_value(ship_df, [date, countries, ships], funcs, columns)

    df = ship_df[fi.by_value(ship_df, [countries, ships], funcs, columns)]

    if len(df) < 1:
        return []
    g = df.groupby('date').count().sort_index()

    colors = [
        'rgb(123, 199, 255)' if
        ((i - datetime.now()).days >= dates[0] and
         (i - datetime.now()).days < dates[1]) else 'rgba(123, 199, 255, 0.2)'
        for i in g.index
    ]

    data = [
        dict(
            type='bar',
            x=g.index,
            y=g['nom'],
            marker=dict(color=colors),
        ),
    ]

    layout_count['dragmode'] = 'select'
    layout_count['showlegend'] = False
    layout_count['autosize'] = True

    figure = dict(data=data, layout=layout_count)
    return figure