import streamlit as st import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # Load data data_y = pd.read_csv("merged_y.csv") data_p = pd.read_csv("merged_p.csv") # Sidebar - เลือกปีเริ่มต้นและสิ้นสุด start_year =st.sidebar.selectbox("เลือกปีเริ่มต้น",options=list(range(2002, 2024))) end_year = st.sidebar.selectbox("เลือกปีสิ้นสุด", options=list(range(start_year, 2025))) # Filter data based on selected years data_y['date'] =pd.to_datetime(data_y['date']) data_p['date'] = pd.to_datetime(data_p['date']) # Filter data based on selected years filtered_data = data_y[(data_y["date"].dt.year >= start_year) & (data_y["date"].dt.year <= end_year)] filtered_data_p = data_p[(data_p["date"].dt.year >= start_year) & (data_p["date"].dt.year <= end_year)] # สร้างตัวเลือก Selectbox selected_data = st.sidebar.selectbox("เลือกข้อมูลที่ต้องการโชว์", options=["Electricity", "LPG", "Diesel"]) # Filter data based on selected data type filtered_data = filtered_data[filtered_data["symbol"] == selected_data] filtered_data_p = filtered_data_p[filtered_data_p["symbol"] == selected_data] # Plot time series filtered_data['date']= pd.to_datetime(filtered_data['date'])# filtered_data_p['date']= pd.to_datetime(filtered_data_p['date'])# filtered_data['date'] = filtered_data['date'].dt.strftime('%Y-%m-%d') filtered_data_p['date'] = filtered_data_p['date'].dt.strftime('%Y-%m-%d') db = filtered_data.copy() db_p = filtered_data_p.copy() db['date']= pd.to_datetime(db['date']) db_p['date']= pd.to_datetime(db_p['date']) db['date'] = db['date'].dt.strftime('%Y-%m-%d') db_p['date'] = db_p['date'].dt.strftime('%Y-%m-%d') def plot_graph(x, y, xp, yp): st.write("### กราฟเส้น Time Series") plt.figure(figsize=(10, 6)) sns.set(style="whitegrid") # ตั้งค่าสไตล์กราฟของ Seaborn color = 'yellow' if selected_data == 'Electricity' else 'green' if selected_data == 'LPG' else 'red' sns.lineplot(x=x, y=y, label="Actual", color=color) # ใช้ sns.lineplot() แทน plt.plot() เพื่อสร้างกราฟเส้น sns.lineplot(x=xp, y=yp, label="Predict", color="blue") plt.xlabel("Date") plt.ylabel("Value") plt.title("Time Series") plt.legend() return st.pyplot(plt) plot_graph(db['date'], db['Y'], db_p['date'], db_p['predict'])