Spaces:
Sleeping
Sleeping
import streamlit as st | |
import pandas as pd | |
import plotly.graph_objects as go | |
# Title of the App | |
st.title("Excel Data Visualization with Dual Y-Axis") | |
# Upload Section | |
uploaded_file = st.file_uploader("Upload your Excel file", type=["xlsx", "xls"]) | |
if uploaded_file: | |
try: | |
# Read the Excel file into a DataFrame | |
df = pd.read_excel(uploaded_file) | |
# Preview the uploaded data | |
st.write("Data Preview:") | |
st.dataframe(df) | |
# Ensure required columns are present | |
required_columns = ["Description", "Oct'24", "Nov'24", "Dec/(Inc)"] | |
if not all(column in df.columns for column in required_columns): | |
st.error(f"The uploaded file must contain the following columns: {', '.join(required_columns)}") | |
else: | |
# Plot the Graph | |
fig = go.Figure() | |
# Add Bar Traces for Oct'24 and Nov'24 | |
fig.add_trace(go.Bar( | |
x=df["Description"], | |
y=df["Oct'24"], | |
name="Oct'24", | |
marker_color='blue' | |
)) | |
fig.add_trace(go.Bar( | |
x=df["Description"], | |
y=df["Nov'24"], | |
name="Nov'24", | |
marker_color='green' | |
)) | |
# Add Line Trace for Dec/(Inc) on Secondary Y-axis | |
fig.add_trace(go.Scatter( | |
x=df["Description"], | |
y=df["Dec/(Inc)"], | |
name="Dec/(Inc)", | |
mode="lines+markers", | |
marker=dict(color='red'), | |
yaxis="y2" | |
)) | |
# Update Layout for Dual Y-axis | |
fig.update_layout( | |
title="Dual Axis Chart", | |
xaxis=dict(title="Description"), | |
yaxis=dict( | |
title="Values (Oct'24 and Nov'24)", | |
titlefont=dict(color="blue"), | |
tickfont=dict(color="blue"), | |
), | |
yaxis2=dict( | |
title="Dec/(Inc)", | |
titlefont=dict(color="red"), | |
tickfont=dict(color="red"), | |
overlaying="y", | |
side="right" | |
), | |
barmode="group", | |
legend=dict(x=0.5, y=1.2, orientation="h"), | |
template="plotly_white" | |
) | |
# Render the Plot | |
st.plotly_chart(fig) | |
except Exception as e: | |
st.error(f"Error processing the file: {e}") | |
else: | |
st.info("Please upload an Excel file to get started.") | |
# Footer | |
st.write("---") | |
st.write("Developed using [Streamlit](https://streamlit.io) and [Hugging Face Spaces](https://huggingface.co/spaces).") | |