62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
import pandas as pd
|
|
import matplotlib.pyplot as plt
|
|
import seaborn as sns
|
|
|
|
sns.set_theme(style="whitegrid", palette="muted")
|
|
|
|
# File paths for golf ball data
|
|
golf_file_paths = {
|
|
"11 inches": "golf_11.csv",
|
|
"12 inches": "golf_12.csv",
|
|
"13 inches": "golf_13.csv",
|
|
"14 inches": "golf_14.csv",
|
|
"15 inches": "golf_15.csv"
|
|
}
|
|
|
|
# File paths for lacrosse ball data
|
|
lacrosse_file_paths = {
|
|
"18 inches": "l_18.csv",
|
|
"19 inches": "l_19.csv",
|
|
"20 inches": "l_20.csv",
|
|
"21 inches": "l_21.csv",
|
|
"22 inches": "l_22.csv"
|
|
}
|
|
|
|
# File paths for metal ball data
|
|
metal_file_paths = {
|
|
"2 inches": "metal_2.csv",
|
|
"4 inches": "metal_4.csv",
|
|
"6 inches": "metal_6.csv",
|
|
"8 inches": "metal_8.csv",
|
|
"10 inches": "metal_10.csv"
|
|
}
|
|
|
|
def plot_position_vs_time(file_paths, ball_type):
|
|
for label, path in file_paths.items():
|
|
# Read CSV with no header, assuming columns: Time, Position
|
|
df = pd.read_csv(path, header=None, names=["Time", "Position"])
|
|
|
|
fig, ax = plt.subplots(figsize=(10, 6))
|
|
|
|
ax.plot(df["Time"], df["Position"], label=label, marker='o', markersize=3, linewidth=2)
|
|
|
|
ax.set_xlabel("Time (seconds)", fontsize=14)
|
|
ax.set_ylabel("Position (inches)", fontsize=14)
|
|
ax.set_title(f"{ball_type} - Position vs. Time\nInitial Height: {label}", fontsize=16, pad=15)
|
|
|
|
ax.grid(True, which='both', linestyle='--', linewidth=0.5, alpha=0.7)
|
|
|
|
ax.legend(fontsize=12)
|
|
|
|
plt.tight_layout()
|
|
plt.show()
|
|
#plt.savefig()
|
|
|
|
# Plot golf ball data
|
|
plot_position_vs_time(golf_file_paths, "Golf Ball")
|
|
|
|
# Plot lacrosse ball data
|
|
plot_position_vs_time(lacrosse_file_paths, "Lacrosse Ball")
|
|
|
|
# Plot metal ball data
|
|
plot_position_vs_time(metal_file_paths, "Metal Ball") |