Plt.show показує повний графік, але savefig обрізає зображення


87

Мій код успішно зберігає зображення у файл, але він обрізає важливі деталі праворуч. Існують відповіді на вирішення цієї проблеми, коли вона виникає plt.show, але саме savefigкоманда створює графік неправильно в цьому прикладі. Як це можна виправити?

Відповідний зразок мого коду:

import glob
import os
for file in glob.glob("*.oax"):
    try:
        spc_file = open(file, 'r').read()
        newName = file[6:8] + '-' + file[4:6] + '-' + file[0:4] + ' ' + file[8:12] +  ' UTC (Observed) - No Sea Breeze Day'
        plt.title(newName, fontsize=12, loc='left')
        plt.savefig('X:/' + newName + '.png')        
        plt.show()
    except Exception:
        pass

І зображення (зверху plt.showі знизу - файл, створений з savefig:

Зображення, коли показано за допомогою plt.show Зображення при збереженні у файл



Чи можете ви зробити простий приклад, який можуть протестувати інші, бажано без завантаження додаткових даних та пакетів?
Неаполітанський

1
@ Неаполітанський. Це трохи поза моїми навичками. Відповідь, наведена нижче, говорить про те, що існує загальне рішення цієї проблеми, незалежно від даних.
Джосс Кірк,

@Neopolitan Я не знаю, як виникла проблема, тому я не впевнений, як створити простіші дані, які могли б їх повторити.
Джосс Кірк,

Відповіді:


164

Ви можете спробувати

plt.savefig('X:/' + newName + '.png', bbox_inches='tight')

Або ви можете визначити розмір фігури, наприклад

fig = plt.figure(figsize=(9, 11))
...
plt.savefig(filename, bbox_inches = 'tight')

Дякую за вашу відповідь, я впроваджу її завтра і повідомлю вам, як це відбувається!
Джосс Кірк,

4
Я реалізував першу відповідь, і вона спрацювала! Дякую!
Джосс Кірк,

2
Це має бути параметр за замовчуванням, bbox_inches = 'тугий'. Я використовував його разом із високим значенням dpi, і він чудово працював.
Deepak V
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.