Spaces:
Sleeping
Sleeping
| #%% | |
| 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'] + "<br>" + "Адрес: " + viz_df["adress"] + "<br>" + "Количество гарантийных писем:" + 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='<b>%{customdata}</b>') | |
| # 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='<b>%{customdata}</b>') | |
| # 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'] + "<br>" + "Адрес: " + temp_df["adress"] + "<br>" + "Количество гарантийных писем:" + 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='<b>%{customdata}</b>') | |
| # 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) | |