Соотношение сторон графика matplotlib относится к аспекту масштабирования оси, то есть отношению единицы y к единице x.
Это соотношение можно изменить с помощью функции matplotlib.axes.Axes.set_aspect() .
Под капотом функция set_aspect() фактически изменяет то, что известно как система координат данных, но на практике мы обычно хотим изменить систему координат отображения .
Чтобы упростить это преобразование, мы можем использовать этот фрагмент кода:
#define y-unit to x-unit ratio
ratio = 1.0
#get x and y limits
x_left, x_right = ax.get_xlim ()
y_low, y_high = ax.get_ylim ()
#set aspect ratio
ax.set_aspect ( abs ((x_right-x_left)/(y_low-y_high))\*ratio)
Давайте рассмотрим пример использования этой функции на практике.
Шаг 1: Создайте базовый график Matplotlib
Во-первых, давайте создадим простую линейную диаграмму с помощью Matplotlib:
import matplotlib.pyplot as plt
#define matplotlib figure and axis
fig, ax = plt.subplots()
#create simple line plot
ax.plot([0, 10],[0, 20])
#display plot
plt.show()

Шаг 2: Установите соотношение сторон (неправильный способ)
Обратите внимание, что ось x длиннее оси y. Попробуем установить соотношение сторон равным 1, т.е. оси x и оси y должны быть равны:
import matplotlib.pyplot as plt
#define matplotlib figure and axis
fig, ax = plt.subplots()
#create simple line plot
ax.plot([0, 10],[0, 20])
#attempt to set aspect ratio to 1
ax.set_aspect (1)
#display plot
plt.show()

Обратите внимание, что это не сработало, как мы ожидали. Ось Y намного длиннее оси X.
Шаг 3: Установите соотношение сторон (правильно)
В следующем коде показано, как использовать простой расчет для установки правильного соотношения сторон:
import matplotlib.pyplot as plt
#define matplotlib figure and axis
fig, ax = plt.subplots()
#create simple line plot
ax.plot([0, 10],[0, 20])
#set aspect ratio to 1
ratio = 1.0
x_left, x_right = ax.get_xlim ()
y_low, y_high = ax.get_ylim ()
ax.set_aspect ( abs ((x_right-x_left)/(y_low-y_high))\*ratio)
#display plot
plt.show()

Обратите внимание, что этот график имеет ожидаемое соотношение сторон. Ось X и ось Y имеют одинаковую длину.
Шаг 4: Настройте соотношение сторон на то, что вам нравится
Если мы хотим, чтобы ось Y была длиннее оси X, мы можем просто указать соотношение сторон, чтобы оно было числом больше 1:
import matplotlib.pyplot as plt
#define matplotlib figure and axis
fig, ax = plt.subplots()
#create simple line plot
ax.plot([0, 10],[0, 20])
#set aspect ratio to 3
ratio = 3
x_left, x_right = ax.get_xlim ()
y_low, y_high = ax.get_ylim ()
ax.set_aspect ( abs ((x_right-x_left)/(y_low-y_high))\*ratio)
#display plot
plt.show()

И если мы хотим, чтобы ось Y была короче, чем ось X, мы можем просто указать соотношение сторон, чтобы оно было числом меньше 1:
import matplotlib.pyplot as plt
#define matplotlib figure and axis
fig, ax = plt.subplots()
#create simple line plot
ax.plot([0, 10],[0, 20])
#set aspect ratio to .3
ratio = .3
x_left, x_right = ax.get_xlim ()
y_low, y_high = ax.get_ylim ()
ax.set_aspect ( abs ((x_right-x_left)/(y_low-y_high))\*ratio)
#display plot
plt.show()

Вы можете найти больше руководств по Matplotlib здесь .