#%% import pandas as pd import streamlit as st import plotly.graph_objects as go df = pd.read_excel("preprocessed_geodata_v2.xlsx") def get_lat_lon(row): row = eval(row['result_dadata'])[0] lat = row['geo_lat'] lon = row['geo_lon'] adress = row['result'] return lat, lon, adress dct_colors = {'red':'больше 6000', 'blue':'6000-3000', 'yellow':'3000-1000', # 'green':'400-200', # 'purple':'200-100', # 'orange':'100-30', 'black':'меньше 1000' } def get_colors(row): if row > 6000: return 'red' elif row <= 6000 and row > 3000: return 'blue' elif row <= 3000 and row > 1000: return 'yellow' # elif row <= 400 and row > 200: # return 'green' # elif row <= 200 and row > 100: # return 'purple' # elif row <= 100 and row > 30: # return 'orange' else: return 'black' df[['lat', 'lon', 'adress']] = df.apply(get_lat_lon, axis=1, result_type='expand') viz_df = df[['lpu_name','lat', 'lon', 'adress', 'count_gp']].copy() viz_df[['lat','lon']] = viz_df[['lat','lon']].astype(float) viz_df['colors'] = viz_df['count_gp'].apply(get_colors) text_series ="Название клиники: "+ viz_df['lpu_name'] + "
" + "Адрес: " + viz_df["adress"] + "
" + "Количество гарантийных писем:" + viz_df['count_gp'].astype(str) #%% fig_bubbles_coords = go.Figure(data=go.Scattermapbox( lat=viz_df['lat'], lon=viz_df['lon'], mode='markers', marker=go.scattermapbox.Marker( size=viz_df['count_gp'], color='red', sizemode='area', sizeref=10, opacity=0.6 ), text=text_series, )) fig_bubbles_coords.update_layout( mapbox_style='open-street-map', autosize=True, hovermode='closest', showlegend=False, mapbox=dict( center=dict(lat=viz_df['lat'].mean(), lon=viz_df['lon'].mean()), zoom=9 ), width=900, height=900 ) # fig_bubbles_coords.show() #%% fig_bubbles = go.Figure(data=go.Scattermapbox( lat=viz_df['lat'], lon=viz_df['lon'], mode='markers', marker=go.scattermapbox.Marker( size=viz_df['count_gp'], color='red', sizemode='area', sizeref=5, opacity=0.6, ), customdata=text_series, )) fig_bubbles.update_layout( mapbox_style='open-street-map', autosize=True, hovermode='closest', showlegend=False, mapbox=dict( center=dict(lat=viz_df['lat'].mean(), lon=viz_df['lon'].mean()), zoom=9 ), width=900, height=900 ) fig_bubbles.update_traces(hovertemplate='%{customdata}') # fig_bubbles.show() #%% fig_heatbar = go.Figure(data=go.Scattermapbox( lat=viz_df['lat'], lon=viz_df['lon'], mode='markers', marker=go.scattermapbox.Marker( color=viz_df['count_gp'], sizemode='area', sizeref=5, opacity=1, colorscale='rdylbu', # Градиент цветов от светло-синего до темно-синего colorbar=dict(title='count_gp') ), customdata=text_series, )) fig_heatbar.update_layout( mapbox_style='open-street-map', autosize=True, hovermode='closest', showlegend=False, mapbox=dict( center=dict(lat=viz_df['lat'].mean(), lon=viz_df['lon'].mean()), zoom=9 ), width=900, height=900 ) fig_heatbar.update_traces(hovertemplate='%{customdata}') # fig_heatbar.show() #%% dct_colors = {'red':'больше 6000', 'blue':'6000-3000', 'yellow':'3000-1000', # 'green':'400-200', # 'purple':'200-100', # 'orange':'100-30', 'black':'меньше 1000' } colors = ['red', 'blue', 'yellow', # 'green', # 'purple', # 'orange', 'black'] fig_colored = go.Figure() for color in colors: temp_df = viz_df[viz_df['colors'] == color] text_series_temp = "Название клиники: "+ temp_df['lpu_name'] + "
" + "Адрес: " + temp_df["adress"] + "
" + "Количество гарантийных писем:" + temp_df['count_gp'].astype(str) fig_colored.add_trace(go.Scattermapbox( lat=temp_df['lat'], lon=temp_df['lon'], mode='markers', marker=go.scattermapbox.Marker( color=color, sizemode='area', sizeref=5, opacity=1, ), name=dct_colors[color], customdata=text_series_temp, )) fig_colored.update_layout( mapbox_style='open-street-map', autosize=True, hovermode='closest', showlegend=True, mapbox=dict( center=dict(lat=viz_df['lat'].mean(), lon=viz_df['lon'].mean()), zoom=9 ), width=900, height=900 ) fig_colored.update_traces(hovertemplate='%{customdata}') # fig_colored.show() # %% viz_df = viz_df.rename(columns={"count_gp":"Число_ГП"}) #%% st.dataframe(data=viz_df[['lpu_name', 'Число_ГП', 'adress']]) # st.plotly_chart(fig_bubbles_coords) st.plotly_chart(fig_bubbles) st.plotly_chart(fig_heatbar) st.plotly_chart(fig_colored) # st.table(df)