charting / app.py
JUNGU's picture
rollback
a6d87fa
raw
history blame
1.68 kB
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import io
st.title("Webcam Color Detection Charting")
uploaded_file = st.file_uploader("Choose a CSV file", type="csv")
time_frame_options = [
"All",
"1 second",
"5 seconds",
"10 seconds",
"30 seconds",
"1 minute",
"5 minutes",
"10 minutes",
"30 minutes",
"60 minutes",
]
time_frame = st.selectbox("Data Time Frame", time_frame_options)
if uploaded_file is not None:
# CSV ํŒŒ์ผ ์ฝ๊ธฐ
data = pd.read_csv(uploaded_file)
# ์‹œ๊ฐ„ ํ”„๋ ˆ์ž„์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง
if time_frame != "All":
seconds = {
"1 second": 1,
"5 seconds": 5,
"10 seconds": 10,
"30 seconds": 30,
"1 minute": 60,
"5 minutes": 300,
"10 minutes": 600,
"30 minutes": 1800,
"60 minutes": 3600,
}
data['timestamp'] = pd.to_datetime(data['timestamp'], unit='ms')
data.set_index('timestamp', inplace=True)
data = data.resample(f"{seconds[time_frame]}S").mean().dropna().reset_index()
# ์ฐจํŠธ ์ƒ์„ฑ
fig, axes = plt.subplots(2, 1, figsize=(10, 8))
# RGB ์ฐจํŠธ
axes[0].plot(data['R'], 'r', label='R')
axes[0].plot(data['G'], 'g', label='G')
axes[0].plot(data['B'], 'b', label='B')
axes[0].legend(loc='upper right')
axes[0].set_title('RGB Values')
# HSV ์ฐจํŠธ
axes[1].plot(data['H'], 'r', label='H')
axes[1].plot(data['S'], 'g', label='S')
axes[1].plot(data['V'], 'b', label='V')
axes[1].legend(loc='upper right')
axes[1].set_title('HSV Values')
st.pyplot(fig)