MIT-Fishery-App / app_plot_utils.py
aus10powell's picture
Upload app_plot_utils.py
c0d813b
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()
)