Plotting Area aspect ratio does not increase with FigSize

Bug summary

Trying to increase the width of the plotting area to a roughly 2 by 1 aspect ratio. I have defined a figsize of (8, 4) accordingly.

Right now (as you can see in the below image), the plotting area is clearly a square region (the white area). Increasing the figsize does increase the area of the plot, but doesn’t give me the aspect ratio i want (always remains a square). I’m using the red color on the figure to show to expanded region, which is currently useless.

Code for reproduction

# You can ignore most of the code in the start. Main matplotlib code is in the second half. 

import numpy as np
from sympy import Line, Polygon as Polyg
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
import matplotlib.pyplot as plt
import numpy as np
from shapely.geometry import Polygon, LineString, Point
from matplotlib.pyplot import figure


@staticmethod
def by_two_polygons(shaplypoly, length=10000, make_ccw=True):
    if type(shaplypoly) == Polygon:
        xe, ye = shaplypoly.exterior.xy
        epoly_cord = list(zip(xe, ye))
        e = np.array(epoly_cord)
        poly1_points = np.insert(e, 2, 0, axis=1)
        poly2_points = np.insert(e, 2, length, axis=1)

    vertices = np.dstack((poly1_points, poly2_points))
    polygons = []
    for i in np.arange(vertices.shape[0]) - 1:
        polygons.append(np.array([vertices[i, :, 1],
                                  vertices[i + 1, :, 1],
                                  vertices[i + 1, :, 0],
                                  vertices[i, :, 0]]))
    polygons.append(poly1_points)
    polygons.append(poly2_points)
    return polygons


class plot3Dbeam(object):
    def __init__(self, shapelypoly, length):
        self.shapelypoly = shapelypoly
        self.length = length

    def extract_poly(self):
        xe, ye = self.shapelypoly.exterior.xy
        epoly_cord = list(zip(xe, ye))
        ipoly_cord = []
        if self.shapelypoly.interiors:
            for i, interior in enumerate(self.shapelypoly.interiors):
                ppx, ppy = zip(*interior.coords)
                ipoly = Polygon(list(zip(ppx, ppy)))
                ipoly_cord.append(list(zip(ppx, ppy)))
        return epoly_cord, ipoly_cord

    def plot_exbeam(self):
        A = by_two_polygons(self.shapelypoly, self.length, make_ccw=True)

        for i in range(0, len(A)):
            x, y, z = zip(*A[i])
            x = [*(x)]
            y = [*(y)]
            z = [*(z)]
            ax.plot(x, z, y, 'r')
            verts = [list(zip(x, z, y))]  # this is important variable to fill in between later
            ax.add_collection3d(Poly3DCollection(verts, facecolors='cyan', linewidths=0.5, edgecolors='b', alpha=.25))


fig = figure(figsize = (8, 4), facecolor = "#FF0000")
ax = fig.add_subplot(111, projection = '3d')
fig.subplots_adjust(left=0, right=1, bottom=0, top=1)

poly_1=[(0.0, 0.0), (378.5, 0.0), (506.3928608, 1349.62385), (613.5, 1424.62385), (1137.53385, 1424.62385), (1150.0, 1437.279461), (1150.0, 1515.459991), (1033.4, 1515.459991), (1033.4, 1720.910743), (-1033.4, 1720.910743), (-1033.4, 1515.459991), (-1150.0, 1515.459991), (-1150.0, 1437.279461), (-1137.53385, 1424.62385), (-613.5, 1424.62385), (-506.3928608, 1349.62385), (-378.5, 0.0), (0.0, 0.0)]
poly1 = Polygon(poly_1) # shapley poly defult ploy in app
plot3Dbeam(poly1,length=20000).plot_exbeam()
ax.set_aspect("equal")

plt.show()

Expected outcome

What i actually want is something like this:

Additional information

I basically need this plot to get bigger (especially wider). It’s too small right now, and expanding it too much leaves too much empty room on the top and bottom. I have tried expanding it by zooming in with ax.dist, but that results in clipping when i rotate the image because now the plot is greater than the plotting area (but less than the fig size).