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

Matplotlib співвідношення сторін осі x довше, ніж вісь y

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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *