In [ ]:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def CreatePlotGrid(title, xlabel, ylabel, zlabel, aspectmode):
# plot
fig, ((axXZ, axYZ), (axXY, ax3D)) = plt.subplots(2, 2)
fig.suptitle(title, fontsize=14)
fig.set_size_inches(10, 10)
fig.subplots_adjust(hspace=0.2)
fig.subplots_adjust(wspace=0.5)
# XZ Plane
axXZ.set_title(xlabel + zlabel + ' Plane')
axXZ.xaxis.set_label_text(xlabel + ' axis')
axXZ.yaxis.set_label_text(zlabel + ' axis')
axXZ.set_aspect(aspectmode)
# YZ Plane
axYZ.set_title(ylabel + zlabel + ' Plane')
axYZ.xaxis.set_label_text(ylabel + ' axis')
axYZ.yaxis.set_label_text(zlabel + ' axis')
axYZ.set_aspect(aspectmode)
# XY Plane
axXY.set_title(xlabel + ylabel + ' Plane')
axXY.xaxis.set_label_text(xlabel + ' axis')
axXY.yaxis.set_label_text(ylabel + ' axis')
axXY.set_aspect(aspectmode)
# plot in 3D
ax3D.axis('off')
ax3D = fig.add_subplot(224, projection='3d') # "224" means "2x2 grid, 4th subplot"
ax3D.set_title('3D View in ' + xlabel + ylabel + zlabel + ' Frame')
ax3D.xaxis.set_label_text(xlabel + ' axis')
ax3D.yaxis.set_label_text(ylabel + ' axis')
ax3D.zaxis.set_label_text(zlabel + ' axis')
ax3D.set_aspect(aspectmode)
return axXZ, axYZ, axXY, ax3D
# Allowed colors:
# b: blue
# g: green
# r: red
# c: cyan
# m: magenta
# y: yellow
# k: black
# w: white
def SetPlotGridData(axXZ, axYZ, axXY, ax3D, data, points):
# add points to plots
for key in points:
axXZ.plot(points[key]['xyz'][0], points[key]['xyz'][2], 'o', markersize=5, label=key, color=points[key]['color'])
axYZ.plot(points[key]['xyz'][1], points[key]['xyz'][2], 'o', markersize=5, label=key, color=points[key]['color'])
axXY.plot(points[key]['xyz'][0], points[key]['xyz'][1], 'o', markersize=5, label=key, color=points[key]['color'])
ax3D.plot([points[key]['xyz'][0]], [points[key]['xyz'][1]], [points[key]['xyz'][2]], 'o', markersize=5, label=key, color=points[key]['color'])
# add data to plots
for key in data:
axXZ.plot(data[key]['x'], data[key]['z'], '-', label=key, color=data[key]['color'])
axYZ.plot(data[key]['y'], data[key]['z'], '-', label=key, color=data[key]['color'])
axXY.plot(data[key]['x'], data[key]['y'], '-', label=key, color=data[key]['color'])
ax3D.plot(data[key]['x'], data[key]['y'], data[key]['z'], '-', label=key, color=data[key]['color'])
#ax3D.legend(loc='center left', bbox_to_anchor=(1.2, 0.5))