Skip to content
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

Rescaling the y-axis with manual annotations? #74

Open
JCSzamosi opened this issue Nov 26, 2020 · 3 comments
Open

Rescaling the y-axis with manual annotations? #74

JCSzamosi opened this issue Nov 26, 2020 · 3 comments

Comments

@JCSzamosi
Copy link

I am using the manual annotations option described here, and it's working great except when I add scale_y_sqrt() to the plot, the data points get rescaled but it appears that the annotations do not. The y_position is defined such that the lines are above all the data and this works fine when the y-axis is not rescale, but once I rescale the data the bars are sometimes below the data. Wondering if anyone has any idea how to fix this.

@IndrajeetPatil
Copy link
Collaborator

Can you please provide a reproducible example here?

@JCSzamosi
Copy link
Author

For sure! Here are some data files and an R script that should generate the problem: https://gist.github.com/JCSzamosi/277edf5129d5cc0e16f91798adf66999

@IndrajeetPatil
Copy link
Collaborator

library(ggplot2)
library(ggsignif)

# data
mre_df <- structure(list(Sample = c(
  "KS30", "KS44", "KS29", "KS76", "KS28",
  "KS67", "KS69", "KS68", "KS27", "KS88", "KS50", "KS85", "KS82",
  "KS70", "KS72", "KS74", "KS43", "KS84", "KS48", "KS83", "KS75",
  "KS90", "KS49", "KS64", "KS101", "KS62", "KS71", "KS51", "KS66",
  "KS100", "KS99", "KS87", "KS65", "KS97", "KS86", "KS98", "KS73",
  "KS47", "KS52", "KS58", "KS56", "KS60", "KS54", "KS92", "KS81",
  "KS59", "KS80", "KS33", "KS53", "KS94", "KS93", "KS61", "KS77",
  "KS55", "KS89", "KS79", "KS46", "KS45", "KS63", "KS32", "KS78",
  "KS31", "KS96", "KS95"
), Abundance = c(
  0.000766902119071645,
  0.000709849157054126, 0.000683469324040401, 0.000677752199773304,
  0.000658978583196046, 0.000570559147965006, 0.000487420794120955,
  0.000471289689716021, 0.00038038723420442, 0.000322798368400974,
  0.000296925471706602, 0.000295097903069018, 0.000288453004348984,
  0.000268111489694465, 0.000266260935717003, 0.000264279722851004,
  0.00025071487620106, 0.000246285198259585, 0.000238574659553961,
  0.000238120436024976, 0.000236781663627969, 0.000234660993085323,
  0.000228277687124293, 0.000227795374669154, 0.000194537810585018,
  0.000194223562745636, 0.000193265761896581, 0.000182116190129302,
  0.000177714590367869, 0.000169033130493577, 0.000167089746473442,
  0.000155175590879555, 0.000151700563314758, 0.000116891949332653,
  0.000109045308325609, 9.55740525135976e-05, 9.5331913947059e-05,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0
), Group = c(
  "C1", "A1", "C1", "B2", "C1", "B1",
  "B1", "B1", "C1", "B1", "A1", "B1", "B1", "B1", "B2", "B2", "A1",
  "B1", "A1", "B1", "B2", "B1", "A1", "B1", "B2", "B1", "B1", "A1",
  "B1", "B2", "B2", "B1", "B1", "B2", "B1", "B2", "B2", "A1", "A1",
  "A2", "A2", "A2", "A2", "B2", "B2", "A2", "B2", "C2", "A2", "B2",
  "B2", "A2", "B2", "A2", "B1", "B2", "A1", "A1", "B1", "C2", "B2",
  "C2", "B2", "B2"
)), class = "data.frame", row.names = c(NA, -64L))


mre_star <- structure(list(xmin = c("B1", "C1", "A1"), xmax = c(
  "B2", "C2",
  "A2"
), annotations = c("*", "*", "*"), y_position = c(
  0.0304622974195429,
  0.0332315971849559, 0.0332315971849559
), Test = c(
  "Test1", "Test2",
  "Test2"
)), row.names = c(NA, -3L), class = "data.frame")

# If I'm not rescaling the y axis, this works fine
unscaled <- ggplot(mre_df, aes(Group, Abundance)) +
  geom_boxplot() +
  geom_signif(
    data = mre_star, aes(
      annotations = annotations,
      xmin = xmin, xmax = xmax,
      y_position = y_position,
      colour = Test
    ),
    manual = TRUE
  )
#> Warning: Ignoring unknown aesthetics: annotations, xmin, xmax, y_position

unscaled

# If I rescale the y axis, only the boxplots get rescaled
broken <- ggplot(mre_df, aes(Group, Abundance)) +
  geom_boxplot() +
  geom_signif(
    data = mre_star, aes(
      annotations = annotations,
      xmin = xmin, xmax = xmax,
      y_position = y_position,
      colour = Test
    ),
    manual = TRUE
  ) +
  scale_y_sqrt()
#> Warning: Ignoring unknown aesthetics: annotations, xmin, xmax, y_position

broken

# I need to manually rescale the significance data frame
mre_star$y_position <- sqrt(mre_star$y_position)
fixed <- ggplot(mre_df, aes(Group, Abundance)) +
  geom_boxplot() +
  geom_signif(
    data = mre_star, aes(
      annotations = annotations,
      xmin = xmin, xmax = xmax,
      y_position = y_position,
      colour = Test
    ),
    manual = TRUE
  ) +
  scale_y_sqrt()
#> Warning: Ignoring unknown aesthetics: annotations, xmin, xmax, y_position

fixed

Created on 2021-01-21 by the reprex package (v0.3.0)

Session info
devtools::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value                       
#>  version  R version 4.0.3 (2020-10-10)
#>  os       macOS Mojave 10.14.6        
#>  system   x86_64, darwin17.0          
#>  ui       X11                         
#>  language (EN)                        
#>  collate  en_US.UTF-8                 
#>  ctype    en_US.UTF-8                 
#>  tz       Europe/Berlin               
#>  date     2021-01-21                  
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  package     * version date       lib source        
#>  assertthat    0.2.1   2019-03-21 [1] CRAN (R 4.0.2)
#>  callr         3.5.1   2020-10-13 [1] CRAN (R 4.0.2)
#>  cli           2.2.0   2020-11-20 [1] CRAN (R 4.0.3)
#>  colorspace    2.0-0   2020-11-11 [1] CRAN (R 4.0.2)
#>  crayon        1.3.4   2017-09-16 [1] CRAN (R 4.0.2)
#>  curl          4.3     2019-12-02 [1] CRAN (R 4.0.1)
#>  DBI           1.1.1   2021-01-15 [1] CRAN (R 4.0.3)
#>  desc          1.2.0   2018-05-01 [1] CRAN (R 4.0.2)
#>  devtools      2.3.2   2020-09-18 [1] CRAN (R 4.0.2)
#>  digest        0.6.27  2020-10-24 [1] CRAN (R 4.0.2)
#>  dplyr         1.0.3   2021-01-15 [1] CRAN (R 4.0.3)
#>  ellipsis      0.3.1   2020-05-15 [1] CRAN (R 4.0.2)
#>  evaluate      0.14    2019-05-28 [1] CRAN (R 4.0.1)
#>  fansi         0.4.2   2021-01-15 [1] CRAN (R 4.0.3)
#>  farver        2.0.3   2020-01-16 [1] CRAN (R 4.0.2)
#>  fs            1.5.0   2020-07-31 [1] CRAN (R 4.0.2)
#>  generics      0.1.0   2020-10-31 [1] CRAN (R 4.0.2)
#>  ggplot2     * 3.3.3   2020-12-30 [1] CRAN (R 4.0.3)
#>  ggsignif    * 0.6.0   2019-08-08 [1] CRAN (R 4.0.2)
#>  glue          1.4.2   2020-08-27 [1] CRAN (R 4.0.2)
#>  gtable        0.3.0   2019-03-25 [1] CRAN (R 4.0.2)
#>  highr         0.8     2019-03-20 [1] CRAN (R 4.0.2)
#>  htmltools     0.5.1   2021-01-12 [1] CRAN (R 4.0.3)
#>  httr          1.4.2   2020-07-20 [1] CRAN (R 4.0.2)
#>  knitr         1.30    2020-09-22 [1] CRAN (R 4.0.2)
#>  labeling      0.4.2   2020-10-20 [1] CRAN (R 4.0.2)
#>  lifecycle     0.2.0   2020-03-06 [1] CRAN (R 4.0.2)
#>  magrittr      2.0.1   2020-11-17 [1] CRAN (R 4.0.3)
#>  memoise       1.1.0   2017-04-21 [1] CRAN (R 4.0.2)
#>  mime          0.9     2020-02-04 [1] CRAN (R 4.0.2)
#>  munsell       0.5.0   2018-06-12 [1] CRAN (R 4.0.2)
#>  pillar        1.4.7   2020-11-20 [1] CRAN (R 4.0.3)
#>  pkgbuild      1.2.0   2020-12-15 [1] CRAN (R 4.0.3)
#>  pkgconfig     2.0.3   2019-09-22 [1] CRAN (R 4.0.2)
#>  pkgload       1.1.0   2020-05-29 [1] CRAN (R 4.0.2)
#>  prettyunits   1.1.1   2020-01-24 [1] CRAN (R 4.0.2)
#>  processx      3.4.5   2020-11-30 [1] CRAN (R 4.0.3)
#>  ps            1.5.0   2020-12-05 [1] CRAN (R 4.0.3)
#>  purrr         0.3.4   2020-04-17 [1] CRAN (R 4.0.2)
#>  R6            2.5.0   2020-10-28 [1] CRAN (R 4.0.2)
#>  remotes       2.2.0   2020-07-21 [1] CRAN (R 4.0.2)
#>  rlang         0.4.10  2020-12-30 [1] CRAN (R 4.0.3)
#>  rmarkdown     2.6     2020-12-14 [1] CRAN (R 4.0.3)
#>  rprojroot     2.0.2   2020-11-15 [1] CRAN (R 4.0.3)
#>  scales        1.1.1   2020-05-11 [1] CRAN (R 4.0.2)
#>  sessioninfo   1.1.1   2018-11-05 [1] CRAN (R 4.0.2)
#>  stringi       1.5.3   2020-09-09 [1] CRAN (R 4.0.2)
#>  stringr       1.4.0   2019-02-10 [1] CRAN (R 4.0.2)
#>  testthat      3.0.1   2020-12-17 [1] CRAN (R 4.0.3)
#>  tibble        3.0.5   2021-01-15 [1] CRAN (R 4.0.3)
#>  tidyselect    1.1.0   2020-05-11 [1] CRAN (R 4.0.2)
#>  usethis       2.0.0   2020-12-10 [1] CRAN (R 4.0.3)
#>  vctrs         0.3.6   2020-12-17 [1] CRAN (R 4.0.3)
#>  withr         2.4.0   2021-01-16 [1] CRAN (R 4.0.3)
#>  xfun          0.20    2021-01-06 [1] CRAN (R 4.0.3)
#>  xml2          1.3.2   2020-04-23 [1] CRAN (R 4.0.2)
#>  yaml          2.2.1   2020-02-01 [1] CRAN (R 4.0.2)
#> 
#> [1] /Users/patil/Library/R/4.0/library
#> [2] /Library/Frameworks/R.framework/Versions/4.0/Resources/library

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants