Как установить соотношение сторон в Matplotlib

Как установить соотношение сторон в Matplotlib

Соотношение сторон графика 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() 
Установить соотношение сторон графика matplotlib

Обратите внимание, что этот график имеет ожидаемое соотношение сторон. Ось 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() 
Соотношение сторон matplotlib

И если мы хотим, чтобы ось 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 по оси x длиннее, чем по оси y

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.