transparent background for encapsulated postscript output

Michael Hearne wrote:

Jeff - Darn it. So is there a way to embed an axis _inside_ another, possibly with a transparent background?

--Mike

Mike: Not quite sure why you need to have it transparent - you definitely can't have that with postscript, but it should be possible with the other backends (png, pdf or svg). There's an example of embedded axes at http://matplotlib.sourceforge.net/screenshots.html (axes_demo.py). The inset axes is just drawn on top of the primary axes in the same figure. Is that what you want?

-Jeff

···

On Dec 14, 2007, at 12:28 PM, Jeff Whitaker wrote:

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... <mailto:Jeffrey.S.Whitaker@…259…>
325 Broadway Office : Skaggs Research Cntr 1D-124
Boulder, CO, USA 80303-3328 Web : Jeffrey S. Whitaker: NOAA Physical Sciences Laboratory

------------------------------------------------------
Michael Hearne
mhearne@...924... <mailto:mhearne@…924…>
(303) 273-8620
USGS National Earthquake Information Center
1711 Illinois St. Golden CO 80401
Senior Software Engineer
Synergetics, Inc.
------------------------------------------------------

--
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 : Jeffrey S. Whitaker: NOAA Physical Sciences Laboratory

Jeff - Yes, that’s what I want, thanks.

I think more explanation is in order - my large-scale map is the default basemap projection. The inset map of the globe is a orthogonal projection, which means it comes out as a little circle. I want to insert this smaller map into the larger one, without having to see the area around the circle.

I’m having trouble explaining this… here’s an example:

http://earthquake.usgs.gov/eqcenter/pager/us/2007kwau/us/1/onePAGER.pdf

I want to replicate the little inset globe on the map with the contours.

–Mike

···

On Dec 14, 2007, at 12:49 PM, Jeff Whitaker wrote:

Michael Hearne wrote:

Jeff - Darn it. So is there a way to embed an axis inside another, possibly with a transparent background?

–Mike

Mike: Not quite sure why you need to have it transparent - you definitely can’t have that with postscript, but it should be possible with the other backends (png, pdf or svg). There’s an example of embedded axes at http://matplotlib.sourceforge.net/screenshots.html (axes_demo.py). The inset axes is just drawn on top of the primary axes in the same figure. Is that what you want?

-Jeff

On Dec 14, 2007, at 12:28 PM, Jeff Whitaker wrote:

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).
  1. 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… mailto:Jeffrey.S.Whitaker@...259...

325 Broadway Office : Skaggs Research Cntr 1D-124

Boulder, CO, USA 80303-3328 Web : http://tinyurl.com/5telg


Michael Hearne

mhearne@…924… mailto:mhearne@...924...

(303) 273-8620

USGS National Earthquake Information Center

1711 Illinois St. Golden CO 80401

Senior Software Engineer

Synergetics, Inc.


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


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:

Jeff - Yes, that's what I want, thanks.

I think more explanation is in order - my large-scale map is the default basemap projection. The inset map of the globe is a orthogonal projection, which means it comes out as a little circle. I want to insert this smaller map into the larger one, without having to see the area around the circle.

I'm having trouble explaining this... here's an example:
http://earthquake.usgs.gov/eqcenter/pager/us/2007kwau/us/1/onePAGER.pdf

I want to replicate the little inset globe on the map with the contours.

--Mike

Mike: Something like this?

from matplotlib.toolkits.basemap import Basemap
import pylab
fig = pylab.figure()
ax1 = fig.add_axes([0.1,0.1,0.8,0.8])
m = Basemap(ax=ax1)
m.drawcoastlines(linewidth=0.5)
m.fillcontinents()
ax2 = fig.add_axes([0.1,0.425,0.15,0.15])
m2 = Basemap(projection='ortho',lon_0=-105,lat_0=40,ax=ax2)
m2.drawmapboundary(fill_color='aqua')
m2.drawcoastlines(linewidth=0.1)
m2.fillcontinents(color='coral',lake_color='aqua')
pylab.show()

-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 : Jeffrey S. Whitaker: NOAA Physical Sciences Laboratory

Jeff - Yes! I’m working on implementing this now for my app…

FYI, I got the following error:

TypeError: drawmapboundary() got an unexpected keyword argument ‘fill_color’

and again for ‘lake_color’ on the fillcontinents() method.

I’m using 0.9.7, which I think is the latest released version…

–Mike

···

On Dec 14, 2007, at 1:31 PM, Jeff Whitaker wrote:

from matplotlib.toolkits.basemap import Basemap

import pylab

fig = pylab.figure()

ax1 = fig.add_axes([0.1,0.1,0.8,0.8])

m = Basemap(ax=ax1)

m.drawcoastlines(linewidth=0.5)

m.fillcontinents()

ax2 = fig.add_axes([0.1,0.425,0.15,0.15])

m2 = Basemap(projection=‘ortho’,lon_0=-105,lat_0=40,ax=ax2)

m2.drawmapboundary(fill_color=‘aqua’)

m2.drawcoastlines(linewidth=0.1)

m2.fillcontinents(color=‘coral’,lake_color=‘aqua’)

pylab.show()


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:

Jeff - Yes! I'm working on implementing this now for my app...

FYI, I got the following error:
TypeError: drawmapboundary() got an unexpected keyword argument 'fill_color'

and again for 'lake_color' on the fillcontinents() method.

I'm using 0.9.7, which I think is the latest released version...

Mike: Those are new keywords in 0.9.8 (released a few weeks ago).

-Jeff

···

--Mike
On Dec 14, 2007, at 1:31 PM, Jeff Whitaker wrote:

from matplotlib.toolkits.basemap import Basemap

import pylab

fig = pylab.figure()

ax1 = fig.add_axes([0.1,0.1,0.8,0.8])

m = Basemap(ax=ax1)

m.drawcoastlines(linewidth=0.5)

m.fillcontinents()

ax2 = fig.add_axes([0.1,0.425,0.15,0.15])

m2 = Basemap(projection='ortho',lon_0=-105,lat_0=40,ax=ax2)

m2.drawmapboundary(fill_color='aqua')

m2.drawcoastlines(linewidth=0.1)

m2.fillcontinents(color='coral',lake_color='aqua')

pylab.show()

------------------------------------------------------
Michael Hearne
mhearne@...924... <mailto:mhearne@…924…>
(303) 273-8620
USGS National Earthquake Information Center
1711 Illinois St. Golden CO 80401
Senior Software Engineer
Synergetics, Inc.
------------------------------------------------------

--
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 : Jeffrey S. Whitaker: NOAA Physical Sciences Laboratory