Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Matplotlib imshow with EPS

Tags:

Is there a way to use PIL with matplotlib to place logos that are in EPS or SVG (or any scalable vector format) in order to place the logo on the graph and output the final file as EPS. Now I get a terribly rendered graphic because there is an .png file trying to be converted to EPS format, where the goal is to save the image as an .eps or .svg.

I think this may be a restriction due to the backend, I'm open to changing which one I use.

This is what does not work:

    ax1.set_axis_bgcolor('#fafafa')
    
    img = image.imread('./static/images/logo.png')
    image_axis = fig.add_axes(ax1.get_position())
    image_axis.patch.set_visible(False)
    image_axis.yaxis.set_visible(False)
    image_axis.xaxis.set_visible(False)
    image_axis.set_xlim(0,19.995)
    image_axis.set_ylim(0,11.25)

    image_axis.imshow(img, extent=(11.79705,18.99525,.238125,1.313625), zorder=-1, alpha=0.15) #need to keep a 5.023 x by y ratio (.4 x .079)

    fig.savefig('static/images/graphs/'+filename+'.eps', format='eps', bbox_inches='tight')

Any updates?

like image 319
Jared Avatar asked May 18 '15 19:05

Jared


1 Answers

This is an old question, but worth answering for current and future visitors wanting to do the same.

There is a way to load SVG files and convert them into Path objects, implemented in the svgpath2mpl package. From the project's page:

A path in SVG is defined by a 'path' element which contains a d="(path data)" attribute that contains moveto, line, curve (both cubic and quadratic Béziers), arc and closepath instructions. Matplotlib actually supports all of these instructions natively but doesn't provide a parser or fully compatible API.

Seen at Matplotlib custom marker/symbol.

like image 173
wagnifico Avatar answered Sep 27 '22 23:09

wagnifico