Plotting
Larvaworld provides a comprehensive plotting API in /lib/plot/ for analyzing behavioral data.
Plot Categories
Trajectory Plots (traj.py)
Purpose: Spatial visualization
from larvaworld.lib.plot import traj
# Single-dataset trajectories
traj.traj_1group(dataset, unit="mm")
# Grouped trajectories (via graph ID "trajectories")
from larvaworld.lib.process import LarvaDatasetCollection
collection = LarvaDatasetCollection(datasets=[dataset])
collection.plot(ids=["trajectories"])
Key Functions / IDs:
traj.traj_1group(dataset): 2D paths for a single datasetGraph ID
"trajectories": grouped trajectories viaLarvaDatasetCollection.plot
Time-Series Plots (time.py)
Purpose: Temporal dynamics
from larvaworld.lib.plot import time as timeplot
# Path length / dispersal over time
timeplot.plot_pathlength(datasets=[dataset])
timeplot.plot_dispersal(datasets=[dataset], range=(0, 60)) # seconds
Key Functions / IDs:
timeplot.plot_pathlength(datasets=[...]): Cumulative distancetimeplot.plot_dispersal(datasets=[...]): Dispersal over a time window in seconds (graph ID"dispersal")
Distribution Plots (hist.py)
Purpose: Statistical distributions
from larvaworld.lib.plot import hist
# Kinematic distributions
hist.plot_distros(
datasets=[dataset],
ks=["v", "a", "fov"], # speed, acceleration, forward velocity
mode="hist",
)
Key Functions / IDs:
hist.plot_distros(datasets=[...]): Velocity / angular distributions (graph ID"distros")
Bearing Plots (bearing.py)
Purpose: Navigation analysis
from larvaworld.lib.plot import bearing
bearing.plot_chunk_Dorient2source(
source_ID="CS_plus", # must match the source ID in your experiment/environment
datasets=[dataset],
chunk="run",
)
Key Functions / IDs:
bearing.plot_chunk_Dorient2source(...): Bearing to source during behavioral chunks (graph ID"bearing to source/epoch")
Stride Cycle Plots (stridecycle.py)
Purpose: Crawling kinematics
from larvaworld.lib.plot import stridecycle
stridecycle.plot_stride_Dbend(datasets=[dataset])
stridecycle.plot_vel_during_strides(datasets=[dataset])
DEB Plots (deb.py)
Purpose: Energetics visualization
from larvaworld.lib.plot import deb
deb.plot_debs(datasets=[dataset])
Complete Example
from larvaworld.lib.sim import ExpRun
from larvaworld.lib.plot import traj, hist, time as timeplot
# Run experiment
run = ExpRun(experiment="dish", N=10, duration=5.0)
run.simulate()
# Get dataset
dataset = run.datasets[0]
# Preprocess
dataset.preprocess(filter_f=3.0)
dataset.process(proc_keys=["angular", "spatial"])
dataset.annotate(anot_keys=["bout_detection"])
# Plot trajectories
traj.traj_1group(dataset)
# Plot velocity / angular distributions
hist.plot_distros(datasets=[dataset], ks=["v", "fov"])
# Plot dispersal over time
timeplot.plot_dispersal(datasets=[dataset], range=(0, 60))
Customization
All plotting functions support matplotlib kwargs:
traj.traj_1group(
dataset,
color='blue',
single_color=True,
)
Saving Plots
import matplotlib.pyplot as plt
traj.traj_1group(dataset)
plt.savefig('trajectories.png', dpi=300)
plt.close()