Problem : Need to transform a graphic image of matplotlib to a base64 image
Current Solution : Save the matplot image in a cache folder and read it with read() method and then convert to base64
New Problem : Annoyance : Need a workaround so I dont need to save the graphic as image in any folder. I want to just use the image in the memory. Doing unnecessary I/O is a bad practice.
def save_single_graphic_data(data, y_label="Loss", x_label="Epochs", save_as="data.png"): total_epochs = len(data) plt.figure() plt.clf() plt.plot(total_epochs, data) ax = plt.gca() ax.ticklabel_format(useOffset=False) plt.ylabel(y_label) plt.xlabel(x_label) if save_as is not None: plt.savefig(save_as) plt.savefig("cache/cached1.png") cached_img = open("cache/cached1.png") cached_img_b64 = base64.b64encode(cached_img.read()) os.remove("cache/cached1.png") return cached_img_b64
import cStringIO my_stringIObytes = cStringIO.StringIO() plt.savefig(my_stringIObytes, format='jpg') my_stringIObytes.seek(0) my_base64_jpgData = base64.b64encode(my_stringIObytes.read())
[edit] in python3 it should be
import io my_stringIObytes = io.BytesIO() plt.savefig(my_stringIObytes, format='jpg') my_stringIObytes.seek(0) my_base64_jpgData = base64.b64encode(my_stringIObytes.read())
I think at least ... based on the documentation http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.savefig
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With