How to save Matplot chart to temp file? - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: How to save Matplot chart to temp file? (/thread-33935.html) |
How to save Matplot chart to temp file? - Morkus - Jun-11-2021 Can anyone tell me how I can save a Matplotlib chart to a temporary file I create using tempfile.NamedTemporaryFile()? I can't use the Matplotlib's default savefig('hardcoded_file_path') method since I'm in a REST service and I need to control the path so I can delete the temp file when done. Thank you in advance. RE: How to save Matplot chart to temp file? - DeaD_EyE - Jun-12-2021 import random import os from tempfile import NamedTemporaryFile import matplotlib.pyplot as plt from PIL import Image plt.hist([random.random() for _ in range(100)]) with NamedTemporaryFile("r+b", delete=True) as fd: # delete is by default True # the if you don't set it, it will delete the file # after leaving the with block plt.savefig(fd) # seeking back to position 0 # allowed by r+ fd.seek(0) # show the image from temporary file with PILLOW Image.open(fd).show() # Image is shown (window opens) # but then directly the block is left and the NamedTemporaryFile is deleted print(fd.name, end=" ") if os.path.exists(fd.name): print("still exists.") else: print("was deleted.")You should read the documentation of NamedTemporaryFile. Edit: plt.savefig first argument could be a str or path-like object or a file-like object. fname : str or path-like or binary file-like A path, or a Python file-like object, or possibly some backend-dependent object such as `matplotlib.backends.backend_pdf.PdfPages`.This allows also the use of FakeFiles like io.BytesIO. import random import io import matplotlib.pyplot as plt from PIL import Image plt.hist([random.random() for _ in range(100)]) file_like = io.BytesIO() plt.savefig(file_like) file_like.seek(0) Image.open(file_like).show() RE: How to save Matplot chart to temp file? - Morkus - Jun-12-2021 Thanks so much! :) |