Matplotlib не працює безпосередньо з пікселями, а лише з фізичними розмірами та DPI. Якщо ви хочете відобразити фігуру з певним розміром пікселя, вам потрібно знати DPI вашого монітора. Наприклад, це посилання виявить це для вас.
Якщо у вас є зображення розміром 3841x7195 пікселів, навряд чи монітор буде настільки великим, тому ви не зможете показати фігуру такого розміру (matplotlib вимагає, щоб цифра вміщувалася на екрані, якщо ви запитаєте розмір занадто великий він зменшиться до розміру екрана). Давайте уявимо, що ви хочете зображення 800х800 пікселів лише для прикладу. Ось як показати зображення 800x800 пікселів на моніторі ( my_dpi=96
):
plt.figure(figsize=(800/my_dpi, 800/my_dpi), dpi=my_dpi)
Таким чином, ви в основному просто розділяєте розміри в дюймах за допомогою свого DPI.
Якщо ви хочете зберегти фігуру конкретного розміру, то це вже інша справа. Екранні DPI вже не такі важливі (якщо тільки ви не попросите фігуру, яка не вміститься на екрані). Використовуючи той самий приклад фігури розміром 800x800 пікселів, ми можемо зберегти її в різних дозволах, використовуючи dpi
ключове слово savefig
. Щоб зберегти його в тій же роздільній здатності, що і екран, використовуйте той самий dpi:
plt.savefig('my_fig.png', dpi=my_dpi)
Щоб зберегти його як зображення 8000x8000 пікселів, використовуйте dpi в 10 разів більше:
plt.savefig('my_fig.png', dpi=my_dpi * 10)
Зауважте, що налаштування DPI підтримується не всіма пакетами. Тут використовується резервний файл PNG, але розміри файлів pdf та ps реалізують розмір по-різному. Також зміна DPI та розмірів також вплине на такі речі, як розмір шрифту. Більш великий DPI зберігатиме однакові розміри шрифтів та елементів, але якщо ви хочете менших шрифтів для більшої фігури, вам потрібно збільшити фізичний розмір замість DPI.
Повертаючись до свого прикладу, якщо ви хочете зберегти зображення з розміром 3841 x 7195 пікселів, ви можете зробити наступне:
plt.figure(figsize=(3.841, 7.195), dpi=100)
( your code ...)
plt.savefig('myfig.png', dpi=1000)
Зауважте, що я використав цифру dpi 100 для розміщення на більшості екранів, але збережений з, dpi=1000
щоб досягти необхідної роздільної здатності. У моїй системі це створює png з 3840x7190 пікселями - схоже, що збережений DPI завжди на 0,02 пікселя / дюйм менший від вибраного значення, що матиме (малий) ефект на великих розмірах зображення. Ще трохи обговорення цього питання тут .