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
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