plotnine icon indicating copy to clipboard operation
plotnine copied to clipboard

Support `linewidth` aesthetic to control the sizing of the width of lines

Open christophscheuch opened this issue 1 year ago • 1 comments

ggplot2 recommends using the linewidth aesthetic instead of size as of version 3.4.0 (see this blog post here: https://www.tidyverse.org/blog/2022/11/ggplot2-3-4-0/). The argument in the blog post is as follows: "The reason for this change is that prior to this release size was used for two related, but different, properties: the size of points (and glyphs) and the width of lines. Since one is area based and one is length based they fundamentally needs different scaling and the default size scale has always catered to area sizing, using a square root transform. "

Ideally, the following works in plotnine as well (as it does in ggplot2):

from plotnine import *
from palmerpenguins import load_penguins

penguins = load_penguins().dropna()

(ggplot(penguins, aes(x = "body_mass_g", color = "species"))
   + geom_density(linewidth = 0.75)
)

christophscheuch avatar Jan 14 '24 14:01 christophscheuch

Using linewidth for lines is a better option. As that is what matplotlib uses, the only reason for the current state was API compatibility with ggplot2. The plan is to definitely to make that change as well.

has2k1 avatar Jan 15 '24 06:01 has2k1