Plt.show hiển thị đồ thị đầy đủ nhưng savefig đang cắt hình ảnh


82

Mã của tôi đang lưu thành công hình ảnh vào tệp, nhưng nó đang cắt các chi tiết quan trọng từ phía bên phải. Các câu trả lời tồn tại để khắc phục sự cố này khi nó phát sinh plt.show, nhưng đó là savefiglệnh tạo ra biểu đồ không chính xác trong ví dụ này. Làm thế nào để sửa cái này?

Mẫu mã liên quan của tôi:

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

Và các hình ảnh (trên cùng là plt.showvà dưới cùng là tệp được tạo ra từ savefig:

Hình ảnh khi hiển thị bằng plt.show Hình ảnh khi được lưu vào tệp



Bạn có thể làm một ví dụ đơn giản mà những người khác có thể kiểm tra, tốt nhất là không cần phải tải thêm dữ liệu và gói không?
Neapolitan

1
@Neapolitan. Đó là một chút vượt quá kỹ năng của tôi. Câu trả lời được cung cấp bên dưới gợi ý rằng có một giải pháp chung cho vấn đề này, không phụ thuộc vào dữ liệu.
Joss Kirk

@Neopolitan Tôi không biết vấn đề đã phát sinh như thế nào, vì vậy tôi không chắc làm thế nào để tạo ra dữ liệu đơn giản hơn có thể sao chép nó.
Joss Kirk

Câu trả lời:


156

Bạn có thể thử

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

Hoặc bạn có thể xác định kích thước hình như

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

Cảm ơn câu trả lời của bạn, tôi sẽ thực hiện nó vào ngày mai và cho bạn biết nó diễn ra như thế nào!
Joss Kirk

3
Tôi đã triển khai câu trả lời đầu tiên và nó đã hoạt động! Cảm ơn bạn!
Joss Kirk

1
Đây phải là tùy chọn mặc định, bbox_inches = 'chặt chẽ'. Tôi đã sử dụng nó kết hợp với giá trị dpi cao và nó hoạt động rất tốt.
Deepak V
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.