Basemap Rendering Issue

Hello,

I have an issue rendering with basemap on a Debian server using Agg. I have confirmed that matplotlib does render using the following example.

# do this before importing pylab or pyplot
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1,2,3])
fig.savefig('test.png')

However, I receive the following results when using basemap

Traceback (most recent call last):
File "testImageGen.py", line 117, in <module>
   setCommonBaseMapProperties(m)
File "/home/forecast/sgWaveModel/sgUtil.py", line 34, in setCommonBaseMapProperties
   bmap.drawcoastlines(color=[15./255., 53./255.,73./255.], linewidth=0.15)
File "/usr/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.py", line 1479, in drawcoastlines
   self.set_axes_limits(ax=ax)
File "/usr/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.py", line 2607, in set_axes_limits
   and not ax.get_autoscalex_on()
AttributeError: 'AxesSubplot' object has no attribute 'get_autoscalex_on'

I am using matplotlib.use('Agg') as the first call in the script. The call to bmpa.drawcoastlines is the first call to basemap I make in my scripts. This works on a system with a windowing toolkit. Any ideas?

- steve

After a reinstallation of a few libraries the error message changed. It is as if basemap is not linked to matplotlib.

Traceback (most recent call last):
  File "testImageGen.py", line 117, in <module>
    setCommonBaseMapProperties(m)
  File "/home/forecast/sgWaveModel/sgUtil.py", line 38, in setCommonBaseMapProperties
    bmap.drawmapboundary(linewidth=0.0, color=[15./255., 53./255.,73./255.])
  File "/usr/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.py", line 1325, in drawmapboundary
    for spine in ax.spines.itervalues():
AttributeError: 'AxesSubplot' object has no attribute 'spines'

I am using basemap 1.0 and all the latest libraries for everything required by PIL, matplotlib, pygrib, pyproj etc....

···

On Jul 12, 2010, at 4:34 PM, Steve McFarlin wrote:

Hello,

I have an issue rendering with basemap on a Debian server using Agg. I have confirmed that matplotlib does render using the following example.

# do this before importing pylab or pyplot
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1,2,3])
fig.savefig('test.png')

However, I receive the following results when using basemap

Traceback (most recent call last):
File "testImageGen.py", line 117, in <module>
  setCommonBaseMapProperties(m)
File "/home/forecast/sgWaveModel/sgUtil.py", line 34, in setCommonBaseMapProperties
  bmap.drawcoastlines(color=[15./255., 53./255.,73./255.], linewidth=0.15)
File "/usr/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.py", line 1479, in drawcoastlines
  self.set_axes_limits(ax=ax)
File "/usr/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.py", line 2607, in set_axes_limits
  and not ax.get_autoscalex_on()
AttributeError: 'AxesSubplot' object has no attribute 'get_autoscalex_on'

I am using matplotlib.use('Agg') as the first call in the script. The call to bmpa.drawcoastlines is the first call to basemap I make in my scripts. This works on a system with a windowing toolkit. Any ideas?

- steve
------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
matplotlib-users List Signup and Options

Steve: What's your matplotlib version? Does adding

ax.get_autoscalex_on()

in your first script cause that to fail as well?

-Jeff

···

On 7/12/10 5:34 PM, Steve McFarlin wrote:

Hello,

I have an issue rendering with basemap on a Debian server using Agg. I have confirmed that matplotlib does render using the following example.

# do this before importing pylab or pyplot
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1,2,3])
fig.savefig('test.png')

However, I receive the following results when using basemap

Traceback (most recent call last):
  File "testImageGen.py", line 117, in<module>
    setCommonBaseMapProperties(m)
  File "/home/forecast/sgWaveModel/sgUtil.py", line 34, in setCommonBaseMapProperties
    bmap.drawcoastlines(color=[15./255., 53./255.,73./255.], linewidth=0.15)
  File "/usr/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.py", line 1479, in drawcoastlines
    self.set_axes_limits(ax=ax)
  File "/usr/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.py", line 2607, in set_axes_limits
    and not ax.get_autoscalex_on()
AttributeError: 'AxesSubplot' object has no attribute 'get_autoscalex_on'

I am using matplotlib.use('Agg') as the first call in the script. The call to bmpa.drawcoastlines is the first call to basemap I make in my scripts. This works on a system with a windowing toolkit. Any ideas?

- steve

Hello Jeff,

Again this was an issue with my lack of understanding. Installing python-matplotlib-data solved the issue.

Thanks once again.

- Steve (aka. AbstractMapping)

···

On Jul 12, 2010, at 6:15 PM, Jeff Whitaker wrote:

On 7/12/10 5:34 PM, Steve McFarlin wrote:

Hello,

I have an issue rendering with basemap on a Debian server using Agg. I have confirmed that matplotlib does render using the following example.

# do this before importing pylab or pyplot
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1,2,3])
fig.savefig('test.png')

However, I receive the following results when using basemap

Traceback (most recent call last):
File "testImageGen.py", line 117, in<module>
   setCommonBaseMapProperties(m)
File "/home/forecast/sgWaveModel/sgUtil.py", line 34, in setCommonBaseMapProperties
   bmap.drawcoastlines(color=[15./255., 53./255.,73./255.], linewidth=0.15)
File "/usr/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.py", line 1479, in drawcoastlines
   self.set_axes_limits(ax=ax)
File "/usr/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.py", line 2607, in set_axes_limits
   and not ax.get_autoscalex_on()
AttributeError: 'AxesSubplot' object has no attribute 'get_autoscalex_on'

I am using matplotlib.use('Agg') as the first call in the script. The call to bmpa.drawcoastlines is the first call to basemap I make in my scripts. This works on a system with a windowing toolkit. Any ideas?

- steve

Steve: What's your matplotlib version? Does adding

ax.get_autoscalex_on()

in your first script cause that to fail as well?

-Jeff

I was wrong in my last email. I was running another script and has a residual image from when I uploaded. I will test this and and post back.

···

On Jul 12, 2010, at 6:15 PM, Jeff Whitaker wrote:

On 7/12/10 5:34 PM, Steve McFarlin wrote:

Hello,

I have an issue rendering with basemap on a Debian server using Agg. I have confirmed that matplotlib does render using the following example.

# do this before importing pylab or pyplot
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1,2,3])
fig.savefig('test.png')

However, I receive the following results when using basemap

Traceback (most recent call last):
File "testImageGen.py", line 117, in<module>
   setCommonBaseMapProperties(m)
File "/home/forecast/sgWaveModel/sgUtil.py", line 34, in setCommonBaseMapProperties
   bmap.drawcoastlines(color=[15./255., 53./255.,73./255.], linewidth=0.15)
File "/usr/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.py", line 1479, in drawcoastlines
   self.set_axes_limits(ax=ax)
File "/usr/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.py", line 2607, in set_axes_limits
   and not ax.get_autoscalex_on()
AttributeError: 'AxesSubplot' object has no attribute 'get_autoscalex_on'

I am using matplotlib.use('Agg') as the first call in the script. The call to bmpa.drawcoastlines is the first call to basemap I make in my scripts. This works on a system with a windowing toolkit. Any ideas?

- steve

Steve: What's your matplotlib version? Does adding

ax.get_autoscalex_on()

in your first script cause that to fail as well?

-Jeff

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
matplotlib-users List Signup and Options

python 2.5
Matplotlib 1.0.0
basemap 1.0
pygrib 1.7
pyproj 1.8.6
numpy 1.4.1
Latest source of GRIB API
Jasper 1.9

At this point I am trying anything. I upgraded everything to the latest version. I now receive the following error, and a warnings.

/usr/lib/python2.5/site-packages/matplotlib/contour.py:474: DeprecationWarning: PyArray_FromDims: use PyArray_SimpleNew.
  nchunk = self.nchunk)
/usr/lib/python2.5/site-packages/matplotlib/contour.py:474: DeprecationWarning: PyArray_FromDimsAndDataAndDescr: use PyArray_NewFromDescr.
  nchunk = self.nchunk)

Traceback (most recent call last):
  File "testImageGen.py", line 124, in <module>
    m.drawmapboundary(linewidth=0.0, color=[15./255., 53./255.,73./255.])
  File "/usr/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.py", line 1325, in drawmapboundary
    for spine in ax.spines.itervalues():
AttributeError: 'AxesSubplot' object has no attribute 'spines''

Here are the functions I am calling and their associated errors.

bmap.drawcoastlines(color=[15./255., 53./255.,73./255.], linewidth=0.15)
bmap.drawcountries(color='k', linewidth=0.25)
bmap.fillcontinents(color="white",lake_color=[51./255., 153./255.,204./255.])
bmap.drawstates(color='k', linewidth=0.25)

No errors for the above calls

bmap.drawmapboundary(linewidth=0.0, color=[15./255., 53./255.,73./255.])

I receive the AxesSubplot error listed above.

I believe the errors before (and possible the current) were due to operator error. I should have started with the latest version of the source from the start rather then installing deb packages.

Thanks,
Steve

···

On Jul 12, 2010, at 6:15 PM, Jeff Whitaker wrote:

On 7/12/10 5:34 PM, Steve McFarlin wrote:

Hello,

I have an issue rendering with basemap on a Debian server using Agg. I have confirmed that matplotlib does render using the following example.

# do this before importing pylab or pyplot
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1,2,3])
fig.savefig('test.png')

However, I receive the following results when using basemap

Traceback (most recent call last):
File "testImageGen.py", line 117, in<module>
   setCommonBaseMapProperties(m)
File "/home/forecast/sgWaveModel/sgUtil.py", line 34, in setCommonBaseMapProperties
   bmap.drawcoastlines(color=[15./255., 53./255.,73./255.], linewidth=0.15)
File "/usr/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.py", line 1479, in drawcoastlines
   self.set_axes_limits(ax=ax)
File "/usr/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.py", line 2607, in set_axes_limits
   and not ax.get_autoscalex_on()
AttributeError: 'AxesSubplot' object has no attribute 'get_autoscalex_on'

I am using matplotlib.use('Agg') as the first call in the script. The call to bmpa.drawcoastlines is the first call to basemap I make in my scripts. This works on a system with a windowing toolkit. Any ideas?

- steve

Steve: What's your matplotlib version? Does adding

ax.get_autoscalex_on()

in your first script cause that to fail as well?

-Jeff

Steve: I cannot reproduce this error. It would help if you sent a self-contained example that I can run to trigger the error. It is puzzling since the line that the traceback is pointing to is in a try/except block which tries to old matplotlib API to set the color of the map boundary, and if that fails use the newer 'spines' module (which is available in 1.0). My hypothesis is that you somehow have a mixture of old and new matplotlib versions installed in /usr/lib/python2.5/site-packages, but that's just a guess.

-Jeff

···

On 7/13/10 11:41 AM, Steve McFarlin wrote:

On Jul 12, 2010, at 6:15 PM, Jeff Whitaker wrote:

On 7/12/10 5:34 PM, Steve McFarlin wrote:

Hello,

I have an issue rendering with basemap on a Debian server using Agg. I have confirmed that matplotlib does render using the following example.

# do this before importing pylab or pyplot
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1,2,3])
fig.savefig('test.png')

However, I receive the following results when using basemap

Traceback (most recent call last):
  File "testImageGen.py", line 117, in<module>
    setCommonBaseMapProperties(m)
  File "/home/forecast/sgWaveModel/sgUtil.py", line 34, in setCommonBaseMapProperties
    bmap.drawcoastlines(color=[15./255., 53./255.,73./255.], linewidth=0.15)
  File "/usr/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.py", line 1479, in drawcoastlines
    self.set_axes_limits(ax=ax)
  File "/usr/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.py", line 2607, in set_axes_limits
    and not ax.get_autoscalex_on()
AttributeError: 'AxesSubplot' object has no attribute 'get_autoscalex_on'

I am using matplotlib.use('Agg') as the first call in the script. The call to bmpa.drawcoastlines is the first call to basemap I make in my scripts. This works on a system with a windowing toolkit. Any ideas?

- steve

Steve: What's your matplotlib version? Does adding

ax.get_autoscalex_on()

in your first script cause that to fail as well?

-Jeff

python 2.5
Matplotlib 1.0.0
basemap 1.0
pygrib 1.7
pyproj 1.8.6
numpy 1.4.1
Latest source of GRIB API
Jasper 1.9

At this point I am trying anything. I upgraded everything to the latest version. I now receive the following error, and a warnings.

/usr/lib/python2.5/site-packages/matplotlib/contour.py:474: DeprecationWarning: PyArray_FromDims: use PyArray_SimpleNew.
   nchunk = self.nchunk)
/usr/lib/python2.5/site-packages/matplotlib/contour.py:474: DeprecationWarning: PyArray_FromDimsAndDataAndDescr: use PyArray_NewFromDescr.
   nchunk = self.nchunk)

Traceback (most recent call last):
   File "testImageGen.py", line 124, in<module>
     m.drawmapboundary(linewidth=0.0, color=[15./255., 53./255.,73./255.])
   File "/usr/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.py", line 1325, in drawmapboundary
     for spine in ax.spines.itervalues():
AttributeError: 'AxesSubplot' object has no attribute 'spines''

Here are the functions I am calling and their associated errors.

bmap.drawcoastlines(color=[15./255., 53./255.,73./255.], linewidth=0.15)
bmap.drawcountries(color='k', linewidth=0.25)
bmap.fillcontinents(color="white",lake_color=[51./255., 153./255.,204./255.])
bmap.drawstates(color='k', linewidth=0.25)

No errors for the above calls

bmap.drawmapboundary(linewidth=0.0, color=[15./255., 53./255.,73./255.])

I receive the AxesSubplot error listed above.

I believe the errors before (and possible the current) were due to operator error. I should have started with the latest version of the source from the start rather then installing deb packages.

Thanks,
Steve

--
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-113
Boulder, CO, USA 80303-3328 Web : Jeffrey S. Whitaker: NOAA Physical Sciences Laboratory

My suspicion and your hypothesis were likely correct. I installed python 2.6 from source and all the latest libraries for everything required by pygrib and basemap. It all works wonderfully.

Thanks,
Steve

···

On Jul 13, 2010, at 11:36 AM, Jeff Whitaker wrote:

On 7/13/10 11:41 AM, Steve McFarlin wrote:

On Jul 12, 2010, at 6:15 PM, Jeff Whitaker wrote:

On 7/12/10 5:34 PM, Steve McFarlin wrote:

Hello,

I have an issue rendering with basemap on a Debian server using Agg. I have confirmed that matplotlib does render using the following example.

# do this before importing pylab or pyplot
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1,2,3])
fig.savefig('test.png')

However, I receive the following results when using basemap

Traceback (most recent call last):
File "testImageGen.py", line 117, in<module>
   setCommonBaseMapProperties(m)
File "/home/forecast/sgWaveModel/sgUtil.py", line 34, in setCommonBaseMapProperties
   bmap.drawcoastlines(color=[15./255., 53./255.,73./255.], linewidth=0.15)
File "/usr/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.py", line 1479, in drawcoastlines
   self.set_axes_limits(ax=ax)
File "/usr/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.py", line 2607, in set_axes_limits
   and not ax.get_autoscalex_on()
AttributeError: 'AxesSubplot' object has no attribute 'get_autoscalex_on'

I am using matplotlib.use('Agg') as the first call in the script. The call to bmpa.drawcoastlines is the first call to basemap I make in my scripts. This works on a system with a windowing toolkit. Any ideas?

- steve

Steve: What's your matplotlib version? Does adding

ax.get_autoscalex_on()

in your first script cause that to fail as well?

-Jeff

python 2.5
Matplotlib 1.0.0
basemap 1.0
pygrib 1.7
pyproj 1.8.6
numpy 1.4.1
Latest source of GRIB API
Jasper 1.9

At this point I am trying anything. I upgraded everything to the latest version. I now receive the following error, and a warnings.

/usr/lib/python2.5/site-packages/matplotlib/contour.py:474: DeprecationWarning: PyArray_FromDims: use PyArray_SimpleNew.
  nchunk = self.nchunk)
/usr/lib/python2.5/site-packages/matplotlib/contour.py:474: DeprecationWarning: PyArray_FromDimsAndDataAndDescr: use PyArray_NewFromDescr.
  nchunk = self.nchunk)

Traceback (most recent call last):
  File "testImageGen.py", line 124, in<module>
    m.drawmapboundary(linewidth=0.0, color=[15./255., 53./255.,73./255.])
  File "/usr/lib/python2.5/site-packages/mpl_toolkits/basemap/__init__.py", line 1325, in drawmapboundary
    for spine in ax.spines.itervalues():
AttributeError: 'AxesSubplot' object has no attribute 'spines''

Here are the functions I am calling and their associated errors.

bmap.drawcoastlines(color=[15./255., 53./255.,73./255.], linewidth=0.15)
bmap.drawcountries(color='k', linewidth=0.25)
bmap.fillcontinents(color="white",lake_color=[51./255., 153./255.,204./255.])
bmap.drawstates(color='k', linewidth=0.25)

No errors for the above calls

bmap.drawmapboundary(linewidth=0.0, color=[15./255., 53./255.,73./255.])

I receive the AxesSubplot error listed above.

I believe the errors before (and possible the current) were due to operator error. I should have started with the latest version of the source from the start rather then installing deb packages.

Thanks,
Steve

Steve: I cannot reproduce this error. It would help if you sent a
self-contained example that I can run to trigger the error. It is
puzzling since the line that the traceback is pointing to is in a
try/except block which tries to old matplotlib API to set the color of
the map boundary, and if that fails use the newer 'spines' module (which
is available in 1.0). My hypothesis is that you somehow have a mixture
of old and new matplotlib versions installed in
/usr/lib/python2.5/site-packages, but that's just a guess.

-Jeff

--