Files
SRS_evac_sim/_source_/visualizer.py
Varyngoth 676659e5b9 First
2026-01-28 13:31:49 -04:00

47 lines
1.6 KiB
Python

import sys
import matplotlib
matplotlib.use('QtAgg')
from PyQt5 import QtWidgets
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import numpy as np
from jupedsim.internal.notebook_utils import read_sqlite_file
def visualize(trajectory_file):
traj_data,walkable_area = read_sqlite_file(trajectory_file)
df = traj_data.data
fig,ax = plt.subplots(figsize=(12,8))
if hasattr(walkable_area,"polygon"):
x,y = walkable_area.polygon.exterior.xy
ax.plot(x,y,'k-',alpha=0.3)
scatter = ax.scatter([],[],s=20,c="blue",alpha=0.7)
frame_text = ax.text(0.02,0.98,'',transform=ax.transAxes)
frames=sorted(df["frame"].unique())
frames=frames[::5]
def update(frame):
frame_data = df[df["frame"]==frame]
if len(frame_data)>0:
positions=np.column_stack(
[frame_data["x"].values,frame_data["y"].values])
scatter.set_offsets(positions)
frame_text.set_text(f"Frame: {frame}, Agents: {len(frame_data)}")
return scatter, frame_text
anim = FuncAnimation(fig,update,frames=frames,blit=False,interval=1)
app = QtWidgets.QApplication(sys.argv)
plt.show(block=False)
sys.exit(app.exec())
if __name__ == "__main__":
file_1 = "SRS_evac_2025-11-23_23-03-09.sqlite"
file_2 = "SRS_evac_2025-11-24_01-03-06.sqlite"
file_3 = "SRS_evac_2025-11-30_19-43-15.sqlite"
file_4 = "crosswalk_sim.sqlite"
file_5 = "_SRS_sim_232009_.sqlite"
file_6 = "_SRS_sim_231809_.sqlite"
file_7 = "_SRS_sim_231233_.sqlite"
file_8 = "_SRS_sim_010542_.sqlite"
file_9 = "_SRS_sim_013834_.sqlite"
visualize(file_3)