Source code for biomechzoo.utils.zplot
import matplotlib.pyplot as plt
[docs]
def zplot(data, ch, xlabel='frames', ylabel='angles (deg)'):
"""
Plot a single channel of a zoo file, along with any existing events.
Parameters
----------
data : dict
Loaded zoo file.
ch : str
Name of the channel to plot, e.g., 'RkneeAngles'.
xlabel : str
Label for x-axis. Default is 'frames'.
ylabel : str
Label for y-axis. Default is 'angles (deg)'.
Returns
-------
None
"""
if ch not in data:
raise KeyError(f"Channel '{ch}' not found in data.")
y = data[ch]['line']
x = range(len(y))
plt.figure(figsize=(10, 4))
plt.plot(x, y, label='Signal', linewidth=2)
plt.title(ch)
plt.xlabel(xlabel)
plt.ylabel(ylabel)
plt.grid(True)
# Plot events if available
events = data[ch].get('event', {})
for name, coords in events.items():
evtx, evty = coords[0], coords[1]
plt.plot(evtx, evty, 'ro')
plt.text(evtx, evty, name, fontsize=8, color='red', ha='left', va='bottom')
plt.tight_layout()
plt.show()
if __name__ == '__main__':
# -------TESTING--------
import os
from biomechzoo.utils.zload import zload
# get path to sample zoo file
current_dir = os.path.dirname(os.path.abspath(__file__))
project_root = os.path.dirname(current_dir)
fl = os.path.join(project_root, 'data', 'other', 'HC030A05.zoo')
# load zoo file
data = zload(fl)
ch = 'SACR'
zplot(data, ch)