Skip to content

geom_area with negative y not working in ggplot2 3.2.0 #3390

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
vadimus202 opened this issue Jul 3, 2019 · 12 comments
Closed

geom_area with negative y not working in ggplot2 3.2.0 #3390

vadimus202 opened this issue Jul 3, 2019 · 12 comments
Labels
bug an unexpected problem or unintended behavior layers 📈
Milestone

Comments

@vadimus202
Copy link

In ggplot2 3.1.1 the area under the curve handles negative values

library(ggplot2)

set.seed(115)

ggplot(
    data.frame(
        x = 1:100,
        y = cumsum(rnorm(n = 100, mean = 0, sd = 3))
    ),
    aes(x, y)) +
    geom_area(fill = "pink", alpha = 0.5) +
    geom_path()

image

In ggplot2 3.2.0 something goes wrong:

library(ggplot2)

set.seed(115)

ggplot(
    data.frame(
        x = 1:100,
        y = cumsum(rnorm(n = 100, mean = 0, sd = 3))
    ),
    aes(x, y)) +
    geom_area(fill = "pink", alpha = 0.5) +
    geom_path()

image

@yutannihilation

This comment has been minimized.

@clauswilke
Copy link
Member

Rendered reprex below.

@thomasp85 Is this somehow related to the rewritten polygon rendering code? We may have to consider a hotfix release, since this is a serious regression.

library(ggplot2)

d <- data.frame(
  x = 1:6,
  y = c(1, 2, 2, 1, 0, -1)
)

ggplot(d, aes(x, y)) +
  geom_area(fill = "pink", alpha = 0.5) +
  geom_point()

ggplot(d, aes(x, y - 1)) +
  geom_area(fill = "pink", alpha = 0.5) +
  geom_point()

Created on 2019-07-03 by the reprex package (v0.3.0)

@thomasp85
Copy link
Member

I’ll look into it.

@thomasp85
Copy link
Member

This is due to GeomArea/GeomRibbon now sorting their data in setup_data instead of in draw_panel. PositionStack changes the ordering of the data and that is no longer resolved as it comes after setup_data.

There are two ways around this.

  1. Make sure PositionStack doesn't change the ordering of data
  2. Make a secondary sort in draw_panel()

I generally prefer 1) as it is how I think positions should behave (i.e. not fiddle with data ordering), but it may have unforeseen consequences 🤷‍♂️

I agree this should be fixed in a hot fix (and we really should have some tests to catch this) cc @hadley

@hadley
Copy link
Member

hadley commented Jul 4, 2019

  1. sounds reasonable. And it shouldn't be too bad to do a patch release for this issue. Do we want to wait a week in case any other problems come in?

@thomasp85
Copy link
Member

Let's wait a week before we start release process

@thomasp85 thomasp85 added this to the ggplot2 3.2.1 milestone Jul 4, 2019
@karawoo
Copy link
Member

karawoo commented Jul 5, 2019

If I recall correctly, the ordering in PositionStack exists to fix my first ever bug report (#1552) 🙂. So it is there for a reason, but it's possible that reason has been obviated by other changes since. I can try to look into it this weekend.

@karawoo
Copy link
Member

karawoo commented Jul 17, 2019

I've opened a PR that will address this, but in the meantime geom_ribbon() still works:

library(ggplot2)

set.seed(115)

ggplot(
  data.frame(
    x = 1:100,
    y = cumsum(rnorm(n = 100, mean = 0, sd = 3))
  ),
  aes(x, y)) +
  geom_ribbon(aes(ymax = y, ymin = 0), fill = "pink", alpha = 0.5) +
  geom_path()

Created on 2019-07-17 by the reprex package (v0.3.0)

@paleolimbot paleolimbot added bug an unexpected problem or unintended behavior layers 📈 labels Jul 22, 2019
@yutannihilation
Copy link
Member

@thomasp85 @hadley

Let's wait a week before we start release process

Some weeks have passed. Do we start the process? While this issue should be hot-fixed, this might not be as serious as we thought at first in terms of the number of users affected, considering the fact there's no other issues filed than this one. So, if you are very busy (sorry, I don't think I can review #3401...), I think it's okay not to hurry so much.

But, I'm a bit worrying about that the CRAN check is all red probably due to #3394 (, which seems already fixed by @paleolimbot). Do you get any serious warnings about this from CRAN people?

https://cran.rstudio.com/web/checks/check_results_ggplot2.html

@thomasp85
Copy link
Member

I’m currently on vacation (this week and next). I’ll begin release once I’m back

@yutannihilation
Copy link
Member

OK. Have a nice vacation!

@lock
Copy link

lock bot commented Feb 9, 2020

This old issue has been automatically locked. If you believe you have found a related problem, please file a new issue (with reprex) and link to this issue. https://reprex.tidyverse.org/

@lock lock bot locked and limited conversation to collaborators Feb 9, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug an unexpected problem or unintended behavior layers 📈
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants