File size: 2,782 Bytes
d391513
85902d5
aa639ce
 
d391513
e6e4c0a
 
a8ce126
85902d5
2ba1cfe
85902d5
aa639ce
85902d5
 
975e7b1
b01cb1f
aa639ce
 
 
 
85902d5
 
975e7b1
85902d5
a8ce126
 
975e7b1
 
823d19a
975e7b1
a8ce126
975e7b1
e6e4c0a
aa639ce
2ba1cfe
1234a1f
aa639ce
e6e4c0a
ede1dad
 
 
 
 
 
 
 
 
 
 
 
2ba1cfe
 
a8ce126
dfda813
 
ca1c617
 
2b0d708
ecc36db
2b0d708
 
c5f7083
a8ce126
2ba1cfe
ecc36db
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import streamlit as st
import pandas as pd
import time


st.header("Plotting Time Series Data")
st.markdown("Users can load their time-series data in **.csv** format and select a particular feature and plot-type.\
 Go ahead and use the sidebar on the left to upload your data files to start visualizing it!")

# Load and config
with st.sidebar:
    plot = st.radio("Select the kind of visualization:",('Feature collection', 'Users comparison', 'Data distribution'))
    file = st.file_uploader("Load CSV file", accept_multiple_files = False)
    if file:
        df = pd.read_csv(file, index_col = False)
        # df.index = df['Unnamed: 0'].tolist()
        try:
            del df['Unnamed: 0']
        except KeyError:
            pass
        if 'df' not in st.session_state:
                st.session_state['df'] = df
        st.success("Your data has been successfully loaded! πŸ€—")

if 'df' in st.session_state:
    st.caption("Your uploaded data:")
    st.dataframe(st.session_state.df)
else:
    st.caption("Upload your data using the sidebar and select a plot-type to start :sunglasses:")

df_base = st.session_state.df if 'df' in st.session_state else pd.DataFrame()
n = len(df_base)
col1, col2 = st.columns(2)

# Prepare data
if not df_base.empty and n:
    with col1:
        st.info(f"Your data has {n} samples.")
    slider_range = list(range(n))
    n_plot = st.slider("How many samples do you want to plot in the same graph", slider_range[0]+1, slider_range[-1]+1, 5)
    plot_it = st.button("Plot now! πŸ“Š")
    if plot_it:
        st.snow()
        feature = "relative_pupil_dilation"
        df_plot = df_base.head(n_plot)
        df_plot = [ini_list.strip('][').split(',') for ini_list in df_plot[feature]]
        df_plot = pd.DataFrame(df_plot)
        df_plot.columns = [str(column) for column in range(len(df_plot.columns))]
        if 'df_plot' not in st.session_state:
            st.session_state['df_plot'] = df_plot

# Draw plot
if 'df_plot' in st.session_state:
    with st.spinner(f"Drawing plot to visualize {plot.lower()}"):
        st.caption("Your visualization:")
        df_plot_t = df_plot.copy(deep=True).transpose()
        df_plot_t.columns = [str(column) for column in range(len(df_plot_t.columns))]
        st.line_chart(df_plot_t, y=list(df_plot_t.columns), height=400, width=600)
        st.dataframe(df_plot_t)
        with st.expander("See explanation"):
                st.caption("The chart above shows...")
elif df_base.empty and file:
    st.warning("Consider running outlier detection to clean your data!", icon="⚠️")
    
st.caption(f"developer:: session_state keys: {list(st.session_state.keys())}")
st.caption(f"what is the meaning of the x-axis, add to explanation")
st.caption(f"add sample data demo in another tab")