Wenn ich mit Matplotlib ein 3D-Diagramm erstelle, möchte ich die Größe der Achsen des Diagramms festlegen und das Verhältnis der Achsen vereinheitlichen, aber eine Funktion wie `plt.axes (). Set_aspect ('gleich')`
ist ein 3D-Diagramm. Existiert nicht in, also wie man es löst.
(Nützlich für Orbitalplots usw.)
Zum Beispiel über diese Handlung
# plot in 3D of candidate branches
fig = plt.figure(figsize=(12,10))
plt.rcParams["font.size"] = 20
ax = fig.gca(projection='3d')
# mass
ax.plot_wireframe(xperilune_m2, yperilune_m2, zperilune_m2, color="k", label='m2', alpha=0.1)
# LPO trajectory
ax.plot(dynmatLPO["x_arr"]*Lstar, dynmatLPO["y_arr"]*Lstar, dynmatLPO["z_arr"]*Lstar, c='m', linewidth='1.5', label='Halo')
Angenommen, Sie möchten die Größe der Welle verfestigen. Wenn Sie die $ x $ -Achse von $ 320000 $ bis $ 470000 $ stoppen möchten, haben die $ y $ -Achse von $ -60000 $ bis $ 60000 $ und die $ z $ -Achse von $ -1000 $ bis $ 1000 $ den größten Bereich davon. Der Bereich wird als `` `max = range``` berechnet und die Box wird darauf basierend erstellt.
# set array for max/min boxing
X = np.array([320000, 470000])
Y = np.array( [-60000, 60000])
Z = np.array([-1000, 1000])
# compute max required range
max_range = np.array([X.max()-X.min(), Y.max()-Y.min(), Z.max()-Z.min()]).max() / 2.0
# setup axis
mid_x = (X.max()+X.min()) * 0.5
mid_y = (Y.max()+Y.min()) * 0.5
mid_z = (Z.max()+Z.min()) * 0.5
ax.set_xlim(mid_x - max_range, mid_x + max_range)
ax.set_ylim(mid_y - max_range, mid_y + max_range)
ax.set_zlim(mid_z - max_range, mid_z + max_range)
ax.grid()
plt.title(f'Targeting from {num_branch} manifolds')
ax.legend(loc='best')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.show()
Referenz: https://matplotlib.org/3.2.1/api/_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.html https://stackoverflow.com/questions/30196503/2d-plots-are-not-sitting-flush-against-3d-axis-walls-in-python-mplot3d/41779162#41779162
Recommended Posts