jeu de matplotlib graphique 3d ratio d'aspect?
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
Réglage du rapport d'aspect des œuvres de tracés 2d:
ax = plt.axes()
ax.plot([0,1],[0,10])
ax.set_aspect('equal','box')
Mais pas pour la 3d:
ax = plt.axes(projection='3d')
ax.plot([0,1],[0,1],[0,10])
ax.set_aspect('equal','box')
Est-il une syntaxe différente pour la 3d cas, ou il n'est pas mis en œuvre?
Vous devez vous connecter pour publier un commentaire.
Ma compréhension est fondamentalement que ce n'est pas encore mis en œuvre. Je suis aussi en espérant qu'il soit mis en œuvre prochainement. Voir Ce lien pour une solution possible (je n'ai pas testé moi-même).
Je n'ai pas essayé toutes ces réponses, mais ce quelque chose n'a pour moi:
ax.auto_scale_xyz(*np.column_stack((centers - r, centers + r)))
Ressemble à cette fonctionnalité a depuis été ajouté, donc j'ai pensé ajouter une réponse pour les gens qui viennent par ce fil, dans l'avenir, comme je l'ai fait:
figaspect(0.5)
rend la figure deux fois plus large que haute. Puis le*1.5
augmente la taille de la figure. Les étiquettes etc ne sera pas augmenter, donc c'est une façon de rendre le graphique moins encombré par les étiquettes.Si vous connaissez les limites, par exemple. +-3 centrée autour de (0,0,0), vous pouvez ajouter invisible points comme ceci:
Si vous connaissez les limites vous pouvez également régler le rapport d'aspect de cette façon:
scaling = np.array([getattr(ax, 'get_{}lim'.format(dim))() for dim in 'xyz']); ax.auto_scale_xyz(*[[np.min(scaling), np.max(scaling)]]*3)