marker color handling: matplotlibrc versus args and kwargs

This is, what is wanted in 99% of the cases and for every other

    >> case, a rcfile-option will not help anyway.

    > This sounds ideal to me--it makes everything simpler, both
    > in the code and in explaining what the behavior is.

Hmm.... I can imagine that there are those who want the default
markeredgecolor to be the same color as the facecolor, and those who
want the default edgecolor to be black regardless of facecolor. I am
a bit hesitant to pull this functionality, though I agree that simpler
is better.

JDH

John Hunter wrote:

"Eric" == Eric Firing <efiring@...229...> writes:

    >> This is, what is wanted in 99% of the cases and for every other
    >> case, a rcfile-option will not help anyway.

    > This sounds ideal to me--it makes everything simpler, both
    > in the code and in explaining what the behavior is.

Hmm.... I can imagine that there are those who want the default
markeredgecolor to be the same color as the facecolor, and those who
want the default edgecolor to be black regardless of facecolor. I am
a bit hesitant to pull this functionality, though I agree that simpler
is better.

How about replacing the markeredgecolor and markerfacecolor rc options (but not the kwargs) with something like this:

markeredgedefault = 'face' | colorspec

If something like this is chosen, I think it should apply only to filled markers.

Here is a variation on the theme:

markeredgedefault = colorspec

where colorspec can include 'None' and means "don't draw it". I think that what we actually want for filled markers with the edge color matching the face is not to set the edgecolor to the facecolor, but to not draw the edge at all; this will render better and be more efficient at all levels. (I suspect the 'None' colorspec should be uniformly supported all the way from the high level down to the backends. That would eliminate high-level checking for it as a special case.)

As part of this, I think we should be thinking of the "marker color" as the face color for filled markers and as the line color for non-filled markers; for filled markers, the edge is better thought of as the "outline", which is missing for line markers.

The clearest point in all of this seems to be that trying to have a 1:1 relation between kwargs and rc params is inconsistent with achieving nice default behavior in this case.

Sorry this is a bit of a ramble but I am short on time right now. Norbert, can we take a few days if necessary to think this through carefully and make sure John and others are comfortable with the whole plan before going any further?

Eric

John Hunter wrote:

    >> This is, what is wanted in 99% of the cases and for every other
    >> case, a rcfile-option will not help anyway.

    > This sounds ideal to me--it makes everything simpler, both
    > in the code and in explaining what the behavior is.

Hmm.... I can imagine that there are those who want the default
markeredgecolor to be the same color as the facecolor, and those who
want the default edgecolor to be black regardless of facecolor. I am
a bit hesitant to pull this functionality, though I agree that simpler
is better.
  

This functionality was never there, so nobody can miss it. Before my
changes, the options in matplotlibrc only allowed to specify fixed
colors for mfc and mec. This is now not possible any more, but can
easily be done via kwargs. Automatic coloring was just as inflexible as
it is now but less consistent.

I thought about this kind of configurability, but any clean solution
that I could find, would have become awfully complex.