# Streamlined version of the Streamlit app code import pandas as pd import pydeck as pdk import streamlit as st # SETTING PAGE CONFIG TO WIDE MODE AND ADDING A TITLE AND FAVICON st.set_page_config(layout="wide", page_title="Data Visualization", page_icon=":chart_with_upwards_trend:") # Function to load data def load_data(): path = "ipc.csv" data = pd.read_csv( path, names=["Lat", "Lon", "Number", "Census Tract #"], skiprows=1 ) return data # Function to display the map with corrected tooltip def map(data, lat, lon, zoom): # Since tooltips might not accept columns with spaces or special characters directly, # we need to create a copy of the column with a name that's valid as a JavaScript identifier. data_copy = data.copy() data_copy['census_tract'] = data_copy['Census Tract #'] tooltip = { "html": "Census Tract #: {census_tract}
Number: {Number}", "style": { "backgroundColor": "steelblue", "color": "white" } } st.write( pdk.Deck( map_style="mapbox://styles/mapbox/light-v9", initial_view_state={"latitude": lat, "longitude": lon, "zoom": zoom, "pitch": 50}, layers=[ pdk.Layer( "HexagonLayer", data=data_copy, get_position=["Lon", "Lat"], get_elevation="Number", elevation_scale=4, elevation_range=[0, 1000], pickable=True, extruded=True, coverage=1, ), ], tooltip=tooltip ) ) # Main app execution part data = load_data() midpoint = (data['Lat'].mean(), data['Lon'].mean()) st.title("Interactive Data Visualization") map(data, midpoint[0], midpoint[1], 11)