On 9/5/19 6:16 AM, Xavier Cardil wrote: > Thank you for your responses. > It took me a day to realize that this might be actually the best > solution, as plotting to memory will be way faster than writing to disk. > As long as we can plot to memory via plsmema( ) and then retrieve it, > it should be possible to convert the plot to a Numpy array ? > Keras takes images as arrays as per our requirement. In matplotlib this > is done behind the covers with Pillow + Numpy if I'm not wrong. > Pillow can store images as arrays in memory, so it's similar to what > plsmema( ) does. I mentioned RGBA encoded string instead of Numpy array > because I believe Pillow stores images in memory as RGBA strings, and I > was trying to find a replacement for the whole procedure ( matplotlib is > terribly slow ) > > It would be great to hear more comments from you about this, thanks ! >
Here is an example (using the "memqt" driver, but "memcairo" should also work). #!/usr/bin/env python3 from PIL import Image import numpy import plplot width = 480 height = 320 plot_buffer = numpy.zeros((height, width, 4), numpy.uint8) plplot.plsmema(width, height, plot_buffer) plplot.plstart("memqt", 1, 1) plplot.plenv(0, 360, 0, 90, 0, 2) plplot.plend1() plot_image = Image.frombytes("RGBA", (width, height), plot_buffer) plot_image.save("image.png") The final plot is available in the plot_buffer numpy array object, or in the plot_image PIL/Pillow Image object. -Hazen _______________________________________________ Plplot-general mailing list Plplot-general@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/plplot-general