按值设置地图标记颜色

时间:2019-02-12 17:39:50

标签: python mapbox plotly-dash

我有Dash Web应用程序和使用Mapbox的地图。数据包括带有纬度和经度的“邻居”值。我想根据邻域更改标记的颜色。 我尝试创建一个字典,将邻域映射到颜色。 但是当我运行该应用程序时,会创建地图,但是所有标记都是相同的颜色。

我的代码:

colors = {'77th Street':'rgb(66, 134, 244)','Central':'rgb(65, 244, 83)',
          'Devonshire':'rgb(66, 134, 244)','Foothill':'rgb(244, 223, 65)',
          'Harbor':'rgb(66, 134, 244)','Hollenbeck':'rgb(66, 134, 244)',
          'Hollywood':'rgb(66,4, 65)','Mission':'rgb(66, 134, 244)',
          'N Hollywood':'rgb(66, 134, 244)','Newton':'rgb(244, 65, 211)',
          'Northeast':'rgb(66, 134, 244)','Olympic':'rgb(35, 1, 6)',
          'Pacific':'rgb(66, 134, 244)','Rampart':'rgb(101, 94, 119)',
          'Southeast':'rgb(14, 72, 142)','Southwest':'rgb(66, 134, 244)',
          'Topanga':'rgb(13, 142, 139)','Van Nuys':'rgb(66, 134, 244)',
          'West LA ':'rgb(21, 193, 96)','West Valley':'rgb(66, 134, 244)',
          'Wilshire':'rgb(66, 134, 244)'}
@app.callback(
    Output('map-graph', 'figure'),
    [Input('submit-button', 'n_clicks')],
    [State('my_date_picker', 'start_date'),
     State('my_date_picker', 'end_date'),
     State('my_crime_picker','value'),
     State('my_area_picker','value')
    ])
def update_figure(n_clicks, start_date, end_date,crimelist,arealist):
    start = start_date #datetime.strptime(start_date,'%Y-%m-%d')
    end = end_date #datetime.strptime(end_date,'%Y-%m-%d')

    df1['DateOccurred'] = pd.to_datetime(df['DateOccurred'])
    df2 = df1[(df1['DateOccurred'] >= start) & (df1['DateOccurred'] <= end) ]
    df3 = df2[(df2['CRIMECATEGORY'].isin(crimelist))]
    df4 = df3[(df3['AreaName'].isin(arealist))]
    df5 = df4[['AreaName','DateOccurred','TimeOccurred','CrimeDesc','Lat','Lon']]
    return {
        "data": [{
                "type": "scattermapbox",
                "lat": list(df5['Lat']),
                "lon": list(df5['Lon']),
                "hoverinfo": "text",
                "hovertext": [["Precinct: {} <br>DateOccurred: {} <br>TimeOccurred: {} <br>CrimeDesc: {}".format(i,j,k,l)]
                                for i,j,k,l in zip(df5['AreaName'],df5['DateOccurred'], df5['TimeOccurred'],df5['CrimeDesc'])],
                "mode": "markers",
                "name": list(df5['CrimeDesc']),
                "marker": {"color":colors,#'rgb(193,21,55)',
                    "size": 6,
                    "opacity": 0.5
                }
        }],
        "layout": layout_map
    }

0 个答案:

没有答案