For a research project, I am asked to classify different types of spine curvatures using 3D landmarks of vertebrae.
3D Plots of 2 patients' spine landmarks
What I want the plots to look like more or less
Since I am aiming to focus only on curvature, I need to scale/normalize the 3D lines along the Z-axis as patients differ in height and size. I am not sure how to approach this problem of z-axis scaling while maintaining the relationship of the x and y axes with regard to z.
print(spine_landmark_data_x.head(1).T)
print(spine_landmark_data_y.head(1).T)
print(spine_landmark_data_z.head(1).T)
Output of dataframes from above code (X,Y,Z coordinates in 3 separate dataframes)
test_x = spine_landmark_data_x.copy()
test_y = spine_landmark_data_y.copy()
test_z = spine_landmark_data_z.copy()
# Scale each patient z-axis from 0 to 1
for row in range(spine_landmark_data.shape[0]):
test_z.iloc[row] = spine_landmark_data_z.iloc[row] - spine_landmark_data_z.iloc[row].min()
test_z.iloc[row] = test_z.iloc[row] / test_z.iloc[row].max()
test_y.iloc[row] = spine_landmark_data_y.iloc[row] - spine_landmark_data_y.iloc[row].min()
test_y.iloc[row] = test_y.iloc[row] / test_y.iloc[row].max()
test_x.iloc[row] = spine_landmark_data_x.iloc[row] - spine_landmark_data_x.iloc[row].min()
test_x.iloc[row] = test_x.iloc[row] / test_x.iloc[row].max()