import pandas as pd import altair as alt """ app_plot_utils.py Description: This file contains utility functions for generating interactive plots using the Altair library. These functions are designed for visualizing fish count data obtained from processed videos and historical records. Author: Austin Powell """ def plot_count_date(dataframe): """Plots counts vs relative time for uploaded video.""" dataframe["seconds"] = dataframe["timestamps"] / 1000 dataframe["class"] = "Herring" # TBD: Hard-coded for now return ( alt.Chart(dataframe, title="Processed video detected fish") .mark_line() .encode(x="seconds", y="fish_count", color="class") .interactive() ) def plot_historical_data(dataframe): """Returns altair plot of historical counts to be rendered on main dashboard.""" dataframe["Date"] = pd.to_datetime(dataframe["Date"]) s = ( dataframe.resample(rule="D", on="Date")["Count"].sum().reset_index() ) # Resample on day return ( alt.Chart(s, title="Historical Video Counts of Herring") .mark_bar() .transform_window( # The field to average rolling_mean="mean(Count)", # The number of values before and after the current value to include. frame=[-9, 0], ) .encode(x="Date", y="Count", tooltip=["Count", "Date"]) .interactive() )