Setting aspect ratio of 3D plot Setting aspect ratio of 3D plot python python

Setting aspect ratio of 3D plot


Add following code before savefig:

ax.auto_scale_xyz([0, 500], [0, 500], [0, 0.15])

enter image description here

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]

enter image description here


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() )