Alex Stapleton wrote: > 2008/7/16 Jeff Whitaker <[EMAIL PROTECTED]>: > >> Alex Stapleton wrote: >> >>> Not sure if this is the right place to send this, can't seem to find a >>> dedicated bugs list or issue tracker. Or much discussion regarding the >>> basemap toolkit at all really. >>> >>> Trying to savefig some Basemap instances causes the following >>> exception in the Cairo backend. Seems to work alright using the Agg >>> backend but the fill doesn't seem to come out properly. The sea gets >>> colored as well as the continents. >>> >>> Traceback (most recent call last): >>> File "map.py", line 48, in <module> >>> plt.savefig("map.png", dpi=100) >>> File "/usr/lib/python2.5/site-packages/matplotlib/pyplot.py", line >>> 286, in savefig >>> return fig.savefig(*args, **kwargs) >>> File "/usr/lib/python2.5/site-packages/matplotlib/figure.py", line >>> 1033, in savefig >>> self.canvas.print_figure(*args, **kwargs) >>> File "/usr/lib/python2.5/site-packages/matplotlib/backend_bases.py", >>> line 1301, in print_figure >>> **kwargs) >>> File >>> "/usr/lib/python2.5/site-packages/matplotlib/backends/backend_cairo.py", >>> line 406, in print_png >>> self.figure.draw (renderer) >>> File "/usr/lib/python2.5/site-packages/matplotlib/figure.py", line >>> 833, in draw >>> for a in self.axes: a.draw(renderer) >>> File "/usr/lib/python2.5/site-packages/matplotlib/axes.py", line 1539, in >>> draw >>> a.draw(renderer) >>> File "/usr/lib/python2.5/site-packages/matplotlib/patches.py", line >>> 285, in draw >>> renderer.draw_path(gc, tpath, affine, rgbFace) >>> File >>> "/usr/lib/python2.5/site-packages/matplotlib/backends/backend_cairo.py", >>> line 140, in draw_path >>> raise ValueError("The Cairo backend can not draw paths longer than >>> 18980 points.") >>> ValueError: The Cairo backend can not draw paths longer than 18980 points. >>> >>> Here's a short reduction >>> >>> import matplotlib >>> matplotlib.use("Cairo") >>> from mpl_toolkits.basemap import Basemap >>> import matplotlib.pyplot as plt >>> >>> map = Basemap(projection='ortho', >>> llcrnrlon=-12.7, llcrnrlat=49, >>> urcrnrlon=4.7, urcrnrlat=61, >>> lat_0 = 50, lon_0 = 0, >>> lat_ts=50, >>> resolution='i') >>> map.drawcoastlines(linewidth=0.5) >>> map.drawcountries(linewidth=0.5) >>> map.drawstates(linewidth=0.5) >>> map.drawmapboundary() >>> plt.savefig("map.png", dpi=100) >>> >>> >>> >> Alex: I don't have the Cairo backend installed, but I bet it would work if >> you changed resolution='i' to resolution='l'. Seems like a pretty severe >> limitation of the backend though. >> >> -Jeff >> > > I suppose it's not up to matplotlib to work around silly limits in > Cairo :) What about the fill issue with the Agg backend when doingfil > zoomed in ortho maps? Am I doing something wrong? > Alex: I see in the example you sent that the whole map gets filled when the fillcontinents method is used. Is this what you mean? There's a KNOWN_BUGS file with this entry:
* The fillcontinents method doesn't always do the right thing. Matplotlib always tries to fill the inside of a polygon. Under certain situations, what is the inside of a coastline polygon can be ambiguous, and the outside may be filled instead of the inside. To trigger this, run the garp.py example with lon=-71,lat=-33 (Santiago, Chile). Workaround - mask the land areas with the drawlsmask method instead of filling the coastline polygons. Using the orthographic projection to plot a local region is probably not the best idea though - it's really intended for the global domain to mimic what a satellite would see. I'd try the transverse mercator ('tmerc' - as in the highres.py example), or lambert conformal ('lcc') instead. The fillcontinents method does the right thing in both cases with your map region. BTW: lat_ts doesn't do anything for projection='ortho'. -Jeff -- Jeffrey S. Whitaker Phone : (303)497-6313 NOAA/OAR/CDC R/PSD1 FAX : (303)497-6449 325 Broadway Boulder, CO, USA 80305-3328 ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users