transparent background for encapsulated postscript output

I am using Basemap, and trying to create two maps:

One large-scale map, and a small-scale inset map of the world centered on the location of the large-scale map. My ultimate goal is to create a figure where the inset map is inserted into a corner of the large-scale map. I can see two ways of doing this:

  1. Create both as encapsulated postscript images separately, and put them together in a later “compositing” process. (I’m doing this already).

  2. Create both as basemap instances, and then draw the smaller one on top of the large-scale one. I have no idea how to do this.

A problem I have encountered with the first method is that my image background is set to white by default. I’ve tried to make it transparent by doing the following:

fig = figure(figsize=(5,5),frameon=False) #turn the frame off completely

fig.figurePatch.set_alpha(0.0) #tried setting this to 1.0 and 0.0, neither works

Method #2 would be cleaner, if I could do what I wanted to do in terms of transparencies, but if not, I’ll take method #1.

Does anyone know if it is possible to set the image background transparent for encapsulated postscript output?

Thanks,

Mike

···

Michael Hearne

mhearne@…924…

(303) 273-8620

USGS National Earthquake Information Center

1711 Illinois St. Golden CO 80401

Senior Software Engineer

Synergetics, Inc.


Michael Hearne wrote:

I am using Basemap, and trying to create two maps:

One large-scale map, and a small-scale inset map of the world centered on the location of the large-scale map. My ultimate goal is to create a figure where the inset map is inserted into a corner of the large-scale map. I can see two ways of doing this:

1) Create both as encapsulated postscript images separately, and put them together in a later "compositing" process. (I'm doing this already).
2) Create both as basemap instances, and then draw the smaller one on top of the large-scale one. I have no idea how to do this.

A problem I have encountered with the first method is that my image background is set to white by default. I've tried to make it transparent by doing the following:

fig = figure(figsize=(5,5),frameon=False) #turn the frame off completely
fig.figurePatch.set_alpha(0.0) #tried setting this to 1.0 and 0.0, neither works

Method #2 would be cleaner, if I could do what I wanted to do in terms of transparencies, but if not, I'll take method #1.

Does anyone know if it is possible to set the image background transparent for encapsulated postscript output?

Thanks,

Mike

Mike: Postscript doesn't support alpha transparency. It might work with PDF though.

-Jeff

···

--
Jeffrey S. Whitaker Phone : (303)497-6313
Meteorologist FAX : (303)497-6449
NOAA/OAR/PSD R/PSD1 Email : Jeffrey.S.Whitaker@...259...
325 Broadway Office : Skaggs Research Cntr 1D-124
Boulder, CO, USA 80303-3328 Web : http://tinyurl.com/5telg

pstricks (tex) provides transparency...

http://tug.org/PSTricks/main.cgi?file=Examples/Colors/colors#transparency
http://tug.org/PSTricks/main.cgi?file=pst-plot/3D/examples#coor

Is there any way to get similar hacks into matplotlib? I'm guessing
this is a lot of work though.

···

On Dec 14, 2007 11:28 AM, Jeff Whitaker <jswhit@...146...> wrote:

Mike: Postscript doesn't support alpha transparency. It might work
with PDF though.

Impressive. How is it done?

Cheers,
Alan Isaac

···

On Mon, 17 Dec 2007, Tom Johnson apparently wrote:

pstricks (tex) provides transparency...
http://tug.org/PSTricks/main.cgi?file=Examples/Colors/colors#transparency
http://tug.org/PSTricks/main.cgi?file=pst-plot/3D/examples#coor

Well, I hate to provide the disappointing answer, but it really doesn't work for Postscript. (The name pstricks has perhaps become misleading over time...)

It inserts special codes in the Postscript that aren't part of the Ps standard, but that ps2pdf14 is able to convert into the correct Pdf commands to handle alpha-blending. I don't see any advantage to that kind of workflow (with matplotlib) over just going directly to PDF.

There are other tricks to "fake" transparency in Postscript, for example, by calculating the polygon intersections, etc., but that is significant work, and hard to do in a general way (i.e. anything overlapping anything), without writing a full-fledged geometry framework.

Fortunately, Adobe Reader already has such a thing. You can generate a PDF file with matplotlib, and then run it through "acroread -toPostScript foo.pdf", and get a reasonably well-optimized Postscript file. Unfortunately, ghostscript 7.07 doesn't seem to do this -- it can convert a pdf to a ps file, but the alphablended stuff appears as a raster image. Maybe newer versions (or poppler etc.) are able to do this, but I don't have them on my machine. It would be nice to know of an open source alternative, but Adobe Reader is at least free-as-in-beer.

Cheers,
Mike

Alan G Isaac wrote:

···

On Mon, 17 Dec 2007, Tom Johnson apparently wrote:

pstricks (tex) provides transparency... http://tug.org/PSTricks/main.cgi?file=Examples/Colors/colors#transparency http://tug.org/PSTricks/main.cgi?file=pst-plot/3D/examples#coor

Impressive. How is it done?

Cheers,
Alan Isaac

-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services
for just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

--
Michael Droettboom
Science Software Branch
Operations and Engineering Division
Space Telescope Science Institute
Operated by AURA for NASA

I did not know that.

Thanks!
Alan

···

On Mon, 17 Dec 2007, Michael Droettboom apparently wrote:

You can generate a PDF file with matplotlib, and then run
it through "acroread -toPostScript foo.pdf", and get
a reasonably well-optimized Postscript file.