graphmaker / app.py
akazmi's picture
Update app.py
001a9c1 verified
import streamlit as st
import pandas as pd
import plotly.express as px
# Title of the App
st.title("Smart Data Visualization App")
# File Upload Section
uploaded_file = st.file_uploader("Upload your Excel file", type=["xlsx", "xls"])
if uploaded_file:
try:
# Load the Excel file into a DataFrame
df = pd.read_excel(uploaded_file)
st.write("Data Preview:")
st.dataframe(df)
# User selects columns to visualize
x_axis = st.selectbox("Select X-axis column", df.columns)
y_axis = st.multiselect("Select Y-axis column(s)", [col for col in df.columns if col != x_axis])
if x_axis and y_axis:
# Determine the best type of graph
if df[x_axis].nunique() < len(df[x_axis]) * 0.5:
# If the X-axis is categorical, choose a bar chart
chart_type = "Bar Chart"
fig = px.bar(df, x=x_axis, y=y_axis, barmode="group")
elif len(y_axis) == 1:
# For single numerical column, plot a line chart
chart_type = "Line Chart"
fig = px.line(df, x=x_axis, y=y_axis[0])
else:
# If multiple numerical columns are selected, use a scatter plot matrix
chart_type = "Scatter Matrix"
fig = px.scatter_matrix(df, dimensions=y_axis, color=x_axis)
# Display the selected chart type and plot
st.write(f"Automatically Selected Chart Type: {chart_type}")
st.plotly_chart(fig)
else:
st.info("Please select columns for the X and Y axes to visualize.")
except Exception as e:
st.error(f"Error processing the file: {e}")
else:
st.info("Upload an Excel file to get started.")
# Footer
st.write("---")
st.write("Powered by [Streamlit](https://streamlit.io) and [Plotly](https://plotly.com).")