From b9d39559abadf7be1614565438ef83cd1882ccff Mon Sep 17 00:00:00 2001 From: Cory Date: Mon, 2 Oct 2023 21:51:12 +0200 Subject: [PATCH] Create animation for 100 particles --- src/test.py | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/test.py diff --git a/src/test.py b/src/test.py new file mode 100644 index 0000000..a215cad --- /dev/null +++ b/src/test.py @@ -0,0 +1,63 @@ +import matplotlib.pyplot as plt +import numpy as np +from mpl_toolkits.mplot3d import Axes3D +from matplotlib import animation + +def get_data(files): + res = [] + for file in files: + arr = [[], [], []] + with open(file) as f: + lines = f.readlines() + + for line in lines: + xi,yi,zi = map(lambda x: float(x), line.strip().split(",")) + arr[0].append(xi) + arr[1].append(yi) + arr[2].append(zi) + res.append(arr) + + return np.array(res) + +def update(num, lines, arr): + for line, a in zip(lines, arr): + line.set_data(a[:2, num]) + line.set_3d_properties(a[2, num]) + + + +def animate(): + fig = plt.figure() + ax = fig.add_subplot(projection="3d") + + + arr = get_data([f"output/p{i}.txt" for i in range(100)]) + + arr = arr[:,:,::10] + + N = len(arr[0][0]) + + lines = [ax.plot(*a[:,1], "o")[0] for a in arr] + + ax.set_xlim3d([-500.0, 500.0]) + ax.set_xlabel('X') + + ax.set_ylim3d([-500.0, 500.0]) + ax.set_ylabel('Y') + + ax.set_zlim3d([-500.0, 500.0]) + ax.set_zlabel('Z') + + ani = animation.FuncAnimation(fig, update, N, fargs=(lines, arr), + interval=1, + blit=False) + + + # ani.save("100_particles.gif", writer=animation.FFMpegFileWriter(fps=30)) + plt.show() + + +if __name__ == "__main__": + animate() + +