Як встановити співвідношення сторін у 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 тут .