Как установить соотношение сторон в 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 ()
Обратите внимание, что этот график имеет ожидаемое нами соотношение сторон. Ось 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 ()
И если мы хотим, чтобы ось 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 вы можете найти здесь .