You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Relationship between line-art markers and the markeredgewidth parameter #4679
This issue is related to the call for style overhaul proposals.
My understanding of how line-art markers get drawn (e.g. "x") is that the width of the line reads from the markeredgewidth parameter.
This means that when markeredgewidth is 0, line art markers are invisible. This is particularly a problem for seaborn (where markeredgewidth is 0 by default), but I think one could argue that it is not ideal in any case.
IMO, it would be better to have some differentiation between the width of the edge around a solid marker, which is purely aesthetic, and the weight of the line that is used to draw a line-art marker, which isn't. This distinction already exists a little bit in that line-art markers are colored with the color parameter and not the markeredgecolor parameter (though specifying the latter does appear to override the former). So I would propose one of two things: 1) adding a lines.lineartwidth (or something) parameter to allow separate specification of the line-art marker width, or 2) reading from lines.linewidth instead of lines.markeredgewidth.
A related (but possibly separate; I can make a new issue) point is that it would be nice to have some "hollow" markers, like a hollow "o" or "s" which are really line-art markers with the same basic shape as a circle or square, but without a fill and where the line color is derived from color and not markeredgecolor. It's possible to draw one of these currently, but you have to do something like plt.plot(x, y, "o", markeredgewidth=1, markerfacecolor="none", markeredgecolor="b"). This means it is hard to use this style of marker through an abstract interface (i.e. seaborn), which is a shame because this can be a very useful way to draw scatterplot points.
This actually touches on some very messy code in the deep underbelly of
matplotlib. The relationships between the different properties across the
different aspects of an Artist has been developed in an ad hoc manner. One
thing that we should keep in mind as we adopt the v2.0 styles is that some
choices can be made that will allow us to completely revamp how properties
are set, breaking from the classic style and fixing bugs along the way. I
suspect several of the nuances that you are pointing out are actually
inadvertent "bugs" in the code that has simply become our classic style.
On Mon, Jul 13, 2015 at 12:06 PM, Michael Waskom [email protected]
wrote:
Also I should say that my examples are about plt.plot but apply to
plt.scatter too.
—
Reply to this email directly or view it on GitHub #4679 (comment)
.
I actually this will be fairly easy to address. Markers already have "filled" in their metadata. It's just a matter of using the inputs differently under those modes.
Activity
mwaskom commentedon Jul 13, 2015
Also I should say that my examples are about
plt.plotbut apply toplt.scattertoo.WeatherGod commentedon Jul 13, 2015
This actually touches on some very messy code in the deep underbelly of
matplotlib. The relationships between the different properties across the
different aspects of an Artist has been developed in an ad hoc manner. One
thing that we should keep in mind as we adopt the v2.0 styles is that some
choices can be made that will allow us to completely revamp how properties
are set, breaking from the classic style and fixing bugs along the way. I
suspect several of the nuances that you are pointing out are actually
inadvertent "bugs" in the code that has simply become our classic style.
On Mon, Jul 13, 2015 at 12:06 PM, Michael Waskom [email protected]
wrote:
mdboom commentedon Nov 9, 2015
I actually this will be fairly easy to address. Markers already have "filled" in their metadata. It's just a matter of using the inputs differently under those modes.
API: Line2D and scatter default to automatic
API: Line2D and scatter default to automatic
API: Line2D and scatter default to automatic
API: Line2D and scatter default to automatic
API: Line2D and scatter default to automatic
API: Line2D and scatter default to automatic
API: Line2D and scatter default to automatic
API: Line2D and scatter default to automatic
API: Line2D and scatter default to automatic
API: Line2D and scatter default to automatic
naught101 commentedon Apr 21, 2017
@mwaskom: Why is
markeredgewidth0 and notmarkeredgecolor='none'?