Как установить соотношение сторон в 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])

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

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

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

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

#displayplot
plt. show () 

Соотношение сторон оси X Matplotlib больше, чем ось Y

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *