I see only advantages and no disadvantages whatsoever to
> this change; am I missing something?
The only potential problem with this is that a linewidth=0 is
postscript actually means something -- it tells the rendering device
to draw the thinnest possible line. The change you propose could
potentially break some code where people are relying on this. This
would not be the end of the world as long as we announce it.
Alternatively, we could support 'None' for the facecolor and edgecolor. This
is a little difficult, unfortunately, since None is overloaded to
mean "do the default". The hack workaround we use here is to set
'None' (the string) rather than None itself. Ugly, yes.
The real root of the problem is that
renderer.draw_polygon(gc, rgbFace, tverts)
is overloaded to support edge and face drawing in one function call.
This is a hold-over from the bad-old-days where pcolor and friends use
polygons for every face, and I wanted to save the function call by
putting both edge and face drawing in one call.
One might rather have at the Artist level
if facecolor!='None':
gc.set_foreground(facecolor)
renderer.draw_polygon(gc, tverts, fill=False)
if edgecolor!='None'
gc.set_foreground(edgecolor)
renderer.draw_polygon(gc, tverts, fill=False)
or have booleans in the patch object if this is too ugly.
This is cleaner in my view than using linewidth=0 but I don't feel
strongly. However, it would require changing *every* backend. Argg
JDH