Setting aspect ratio of 3D plot
Add following code before savefig:
ax.auto_scale_xyz([0, 500], [0, 500], [0, 0.15])
If you want no square axis:
edit the get_proj
function inside site-packages\mpl_toolkits\mplot3d\axes3d.py:
xmin, xmax = np.divide(self.get_xlim3d(), self.pbaspect[0])ymin, ymax = np.divide(self.get_ylim3d(), self.pbaspect[1])zmin, zmax = np.divide(self.get_zlim3d(), self.pbaspect[2])
then add one line to set pbaspect:
ax = fig.gca(projection = '3d')ax.pbaspect = [2.0, 0.6, 0.25]
The answer to this question works perfectly for me. And you do not need to set up any ratio, it does everything automatically.
An issue has been opened over at github: https://github.com/matplotlib/matplotlib/issues/8593
The above solutions don't seem to work any more. One has to edit the get_proj
function inside site-packages\mpl_toolkits\mplot3d\axes3d.py
in the following way now:
try: self.localPbAspect = self.pbaspect except AttributeError: self.localPbAspect = [1,1,1] xmin, xmax = ( lim / self.localPbAspect[0] for lim in self.get_xlim3d() ) ymin, ymax = ( lim / self.localPbAspect[1] for lim in self.get_ylim3d() ) zmin, zmax = ( lim / self.localPbAspect[2] for lim in self.get_zlim3d() )