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

fig = figure(figsize = (8, 4), facecolor = "#FF0000")
ax = fig.add_subplot(111, projection = '3d')

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: