\(\require{physics}\)

粒子をプロットするスクリプト

import numpy as np
import matplotlib.pyplot as plt
import math
import glob
def convert(items):
	return [math.floor(float(items[0]))]+list(map(float, items[1:]))

def read_file(fname):
	print("Reading: ",fname)
	f = open(fname)
	num = fname[-10:-4]
	return num, np.array([list(convert(line.rstrip().split())) for line in f.readlines()])



files = sorted(glob.glob("*.txt"))

num, init_data = read_file(files[0])
init_data=init_data.transpose()

for file in files:
	fig = plt.figure(figsize=(8,3))
	num, raw_data=read_file(file)
	plt.gca().set_xlim(0,6)
	plt.gca().set_ylim(0, 0.3)

	data_org = np.array(raw_data).transpose()
	data_1   = np.array(raw_data[0:1440]).transpose()
	data_2   = np.array(raw_data[1440:]).transpose()                                                                                                                                                                      

	plt.scatter(data_1[1], data_1[3], s=1, c="r")
	plt.scatter(data_2[1], data_2[3], s=1, c="b")

	plt.title("2nd-mode internal wave "+num)
	out_name = "fig_"+num+".png"
	plt.savefig(out_name)
	print("--- Wrote: ", out_name)
	sum_dist = 0
	total_num =0
	distx=[]
	distz=[]

	for n in range(len(data_org[0])):
		distx.append(np.sqrt((init_data[1][n]-data_org[1][n])**2))
		distz.append(np.sqrt((init_data[3][n]-data_org[3][n])**2))
	 
	print(np.max(distx))
	print(np.max(distz))