|
import streamlit as st |
|
import pandas as pd |
|
import plotly.express as px |
|
import plotly.graph_objs as go |
|
|
|
|
|
|
|
|
|
|
|
location = st.selectbox("Select Location", ["Lucknow", "Delhi", "Ahmedabad"]) |
|
|
|
|
|
if location == "Lucknow": |
|
file = "brick_kiln_lucknow_v1.csv" |
|
center_lat, center_lon = 26.8467, 80.9462 |
|
elif location == "Delhi": |
|
file = "brick_kiln_delhi_v1.csv" |
|
center_lat, center_lon = 28.7041, 77.1025 |
|
else: |
|
file = "brick_kiln_ahmedabad_v2.csv" |
|
center_lat, center_lon = 23.0225, 72.5714 |
|
|
|
|
|
data = pd.read_csv(file) |
|
|
|
|
|
st.markdown("<h2 style='text-align: center;'>Brick Kiln Location and Conversion Visualization</h2>", unsafe_allow_html=True) |
|
|
|
|
|
year_selected = st.slider("Select the Year", min_value=int(data["Year made"].min()), max_value=int(data["Year made"].max()), value=int(data["Year made"].min()), step=1) |
|
filtered_data = data[data["Year made"] <= year_selected] |
|
|
|
|
|
filtered_data["Conversion"] = filtered_data.apply( |
|
lambda row: "Converted" if row["Year made"] != row["fcb to zigzag"] else "No Conversion", axis=1 |
|
) |
|
|
|
|
|
|
|
def get_status(row, year_selected): |
|
if row["fcb to zigzag"]==2009: |
|
return "fcbk" |
|
elif year_selected == row["fcb to zigzag"]: |
|
return "converted" |
|
else: |
|
return "zigzag" |
|
|
|
|
|
|
|
|
|
def classify_kiln(row, year_selected): |
|
if row["Year made"] > year_selected: |
|
return None |
|
elif row["fcb to zigzag"] > year_selected: |
|
return "FCBK" |
|
else: |
|
return "Zigzag" |
|
|
|
|
|
data["Status1"] = data.apply(lambda row: classify_kiln(row, year_selected), axis=1) |
|
fcbk_count = data[data["Status1"] == "FCBK"].shape[0] |
|
zigzag_count = data[data["Status1"] == "Zigzag"].shape[0] |
|
|
|
|
|
|
|
data["Status"] = data.apply(lambda row: get_status(row, year_selected), axis=1) |
|
filtered_data_conv = data[data["Year made"] <= year_selected] |
|
filtered_data_conv["Type"] = filtered_data_conv["Type"].map({0: "fcbk", 1: "zigzag"}) |
|
filtered_data["Type"] = filtered_data["Type"].map({0: "fcbk", 1: "Zigzag"}) |
|
|
|
total_kilns = len(filtered_data) |
|
fcbk_count1 = filtered_data[(filtered_data["Type"] == "fcbk")].shape[0] |
|
zigzag_count1 = filtered_data_conv[(filtered_data_conv["Type"] == 'zigzag')].shape[0] |
|
converted_count = filtered_data_conv[filtered_data_conv["Status"] == "converted"].shape[0] |
|
|
|
|
|
|
|
if location == "Lucknow": |
|
st.subheader(f"Total Brick Kilns in Lucknow up to Year {year_selected}: {total_kilns}") |
|
st.write(f"Fcbk: {fcbk_count1}",' and ' f"Zigzag: {zigzag_count1}") |
|
st.write(f"Converted from fcbk to zigzag: {converted_count}") |
|
elif location == "Ahmedabad": |
|
st.subheader(f"Total Brick Kilns in Ahmedabad up to Year {year_selected}: {total_kilns}") |
|
st.write(f"Fcbk: {fcbk_count1}",' and ' f"Zigzag: {zigzag_count1}") |
|
st.write(f"Converted from fcbk to zigzag: {converted_count}") |
|
else: |
|
st.subheader(f"Total Brick Kilns in Delhi up to Year {year_selected}: {total_kilns}") |
|
st.write(f"Fcbk: {fcbk_count}",' and ' f"Zigzag: {zigzag_count}") |
|
st.write(f"Converted from fcbk to zigzag: {converted_count}") |
|
|
|
|
|
|
|
if location == "Lucknow": |
|
fig_filtered = px.scatter_mapbox( |
|
data, |
|
lat="Lat", |
|
lon="Lon", |
|
color="Status", |
|
color_discrete_map={"fcbk": "blue", "converted": "green", "zigzag": "red"}, |
|
mapbox_style="carto-positron", |
|
hover_name="Type", |
|
zoom=8.5, |
|
center={"lat": center_lat, "lon": center_lon}, |
|
title=f"Brick Kiln Locations and Status up to Year {year_selected}", |
|
height=600, |
|
width=600 |
|
) |
|
elif location == "Delhi": |
|
fig_filtered = px.scatter_mapbox( |
|
data, |
|
lat="Lat", |
|
lon="Lon", |
|
color="Status1", |
|
color_discrete_map={"FCBK": "blue", "converted": "green", "Zigzag": "red"}, |
|
mapbox_style="carto-positron", |
|
hover_name="Type", |
|
zoom=8.5, |
|
center={"lat": center_lat, "lon": center_lon}, |
|
title=f"Brick Kiln Locations and Status up to Year {year_selected}", |
|
height=600, |
|
width=600 |
|
) |
|
else: |
|
fig_filtered = px.scatter_mapbox( |
|
data, |
|
lat="Lat", |
|
lon="Lon", |
|
color="Status", |
|
color_discrete_map={"fcbk": "blue", "zigzag": "red"}, |
|
mapbox_style="carto-positron", |
|
hover_name="Type", |
|
zoom=8.5, |
|
center={"lat": center_lat, "lon": center_lon}, |
|
title=f"Brick Kiln Locations and Status up to Year {year_selected}", |
|
height=600, |
|
width=600 |
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
yearly_summary = filtered_data.groupby("Year made")["Type"].value_counts().unstack(fill_value=0) |
|
|
|
|
|
|
|
|
|
|
|
st.plotly_chart(fig_filtered) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
years_lucknow = [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022] |
|
brick_kilns_total_lucknow = [117, 314, 376, 396, 408, 432, 433, 454, 461, 466, 470, 477, 478] |
|
brick_kilns_fcb_lucknow = [52, 127, 159, 171, 178, 191, 192, 206, 208, 209, 209, 209, 209] |
|
brick_kilns_zigzag_lucknow = [65, 187, 217, 225, 230, 241, 241, 248, 253, 257, 261, 268, 269] |
|
|
|
|
|
years_delhi = [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022] |
|
brick_kilns_total_delhi = [188,502,649,701,719,751,770,770,775,783,794,795,796] |
|
brick_kilns_fcb_delhi = [184,496,643,695,712,744,742,727,620,401,146,74,37] |
|
brick_kilns_zigzag_delhi = [4,6,6,6,7,7,28,43,155,382,648,721,759] |
|
|
|
|
|
years_ahmedabad = [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022] |
|
brick_kilns_total_ahmedabad = [74,92,115,136,140,155,155,156,156,164,165,169,172] |
|
brick_kilns_fcb_ahmedabad = [74,92,115,136,140,155,155,156,156,164,165,168,172] |
|
brick_kilns_zigzag_ahmedabad = [0,0,0,0,0,0,0,0,0,0,0,1,0] |
|
|
|
|
|
if location == "Lucknow": |
|
years = years_lucknow |
|
brick_kilns_total = brick_kilns_total_lucknow |
|
brick_kilns_fcb = brick_kilns_fcb_lucknow |
|
brick_kilns_zigzag = brick_kilns_zigzag_lucknow |
|
title = "Number of Brick Kilns Over Years in Lucknow" |
|
elif location == "Ahmedabad": |
|
years = years_ahmedabad |
|
brick_kilns_total = brick_kilns_total_ahmedabad |
|
brick_kilns_fcb = brick_kilns_fcb_ahmedabad |
|
brick_kilns_zigzag = brick_kilns_zigzag_ahmedabad |
|
title = "Number of Brick Kilns Over Years in Ahmedabad" |
|
else: |
|
years = years_delhi |
|
brick_kilns_total = brick_kilns_total_delhi |
|
brick_kilns_fcb = brick_kilns_fcb_delhi |
|
brick_kilns_zigzag = brick_kilns_zigzag_delhi |
|
title = "Number of Brick Kilns Over Years in Delhi" |
|
|
|
|
|
fig_line = go.Figure() |
|
|
|
fig_line.add_trace(go.Scatter(x=years, y=brick_kilns_total, mode='lines+markers', name='Total Brick Kilns', line=dict(color='blue'))) |
|
fig_line.add_trace(go.Scatter(x=years, y=brick_kilns_fcb, mode='lines+markers', name='FCBTK', line=dict(color='red'))) |
|
fig_line.add_trace(go.Scatter(x=years, y=brick_kilns_zigzag, mode='lines+markers', name='Zigzag Brick Kilns', line=dict(color='green'))) |
|
|
|
|
|
fig_line.update_layout( |
|
title=title, |
|
xaxis_title="Years", |
|
yaxis_title="Number of Brick Kilns", |
|
yaxis=dict(tickmode='linear', tick0=0, dtick=100, showgrid=False), |
|
width=900 |
|
) |
|
|
|
|
|
fig_line.add_vline(x=year_selected, line_dash="dash", line_color="black", annotation_text=f"Year {year_selected}") |
|
|
|
|
|
st.plotly_chart(fig_line) |
|
|
|
|