ggpubr icon indicating copy to clipboard operation
ggpubr copied to clipboard

Support for AGG device (custom system fonts)

Open olivroy opened this issue 9 months ago • 0 comments

Expected behavior

I would expect ggpubr to respect the graphic device set in RStudio like ggplot2 does, specifically the AGG device.

Special Handling in the case of RStudio. RSTUDIO_GD

https://github.com/tidyverse/ggplot2/blob/main/R/utilities-checks.R

Actual behavior

I get warning when I use a non-default font. (It can be silenced when setting "ggpubr.null_device", but it sometimes doesn't work)

Steps to reproduce the problem

withr::local_language("en")
library(ggplot2)
grDevices::dev.cur()
#> png 
#>   2
library(ggpubr)
# tidyverse/ggplot2#5350

p1 <- mtcars |> ggplot(aes(disp, mpg)) +
  geom_point() +
  theme(
    text = element_text(family = "Gotham")
  )
p1
#> Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
#> font family not found in Windows font database



ggarrange(p1)
#> Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font family
#> 'Gotham' not found in PostScript font database


options(
  "ggpubr.null_device" = ragg::agg_png
)
ggarrange(p1)
#> Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
#> font family not found in Windows font database

Created on 2023-10-05 with reprex v2.0.2

Session info
sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.3.1 (2023-06-16 ucrt)
#>  os       Windows 10 x64 (build 19044)
#>  system   x86_64, mingw32
#>  ui       RTerm
#>  language en
#>  tz       America/Toronto
#>  date     2023-10-05
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  package     * version date (UTC) lib source
#>  abind         1.4-5   2016-07-21 [1] CRAN (R 4.3.0)
#>  backports     1.4.1   2021-12-13 [1] CRAN (R 4.3.0)
#>  broom         1.0.5   2023-06-09 [1] CRAN (R 4.3.1)
#>  car           3.1-2   2023-03-30 [1] CRAN (R 4.3.1)
#>  carData       3.0-5   2022-01-06 [1] CRAN (R 4.3.1)
#>  cli           3.6.1   2023-03-23 [1] CRAN (R 4.3.0)
#>  colorspace    2.1-0   2023-01-23 [1] CRAN (R 4.3.0)
#>  cowplot       1.1.1   2020-12-30 [1] CRAN (R 4.3.1)
#>  curl          5.0.2   2023-08-14 [1] CRAN (R 4.3.1)
#>  digest        0.6.33  2023-07-07 [1] CRAN (R 4.3.1)
#>  dplyr         1.1.3   2023-09-03 [1] CRAN (R 4.3.1)
#>  evaluate      0.22    2023-09-29 [1] CRAN (R 4.3.1)
#>  fansi         1.0.4   2023-01-22 [1] CRAN (R 4.3.0)
#>  farver        2.1.1   2022-07-06 [1] CRAN (R 4.3.0)
#>  fastmap       1.1.1   2023-02-24 [1] CRAN (R 4.3.0)
#>  fs            1.6.3   2023-07-20 [1] CRAN (R 4.3.1)
#>  generics      0.1.3   2022-07-05 [1] CRAN (R 4.3.0)
#>  ggplot2     * 3.4.3   2023-08-14 [1] CRAN (R 4.3.1)
#>  ggpubr      * 0.6.0   2023-02-10 [1] CRAN (R 4.3.1)
#>  ggsignif      0.6.4   2022-10-13 [1] CRAN (R 4.3.1)
#>  glue          1.6.2   2022-02-24 [1] CRAN (R 4.3.0)
#>  gtable        0.3.4   2023-08-21 [1] CRAN (R 4.3.1)
#>  htmltools     0.5.6   2023-08-10 [1] CRAN (R 4.3.1)
#>  knitr         1.44    2023-09-11 [1] CRAN (R 4.3.1)
#>  labeling      0.4.3   2023-08-29 [1] CRAN (R 4.3.1)
#>  lifecycle     1.0.3   2022-10-07 [1] CRAN (R 4.3.0)
#>  magrittr      2.0.3   2022-03-30 [1] CRAN (R 4.3.0)
#>  munsell       0.5.0   2018-06-12 [1] CRAN (R 4.3.0)
#>  pillar        1.9.0   2023-03-22 [1] CRAN (R 4.3.0)
#>  pkgconfig     2.0.3   2019-09-22 [1] CRAN (R 4.3.0)
#>  purrr         1.0.2   2023-08-10 [1] CRAN (R 4.3.1)
#>  R.cache       0.16.0  2022-07-21 [1] CRAN (R 4.3.1)
#>  R.methodsS3   1.8.2   2022-06-13 [1] CRAN (R 4.3.0)
#>  R.oo          1.25.0  2022-06-12 [1] CRAN (R 4.3.0)
#>  R.utils       2.12.2  2022-11-11 [1] CRAN (R 4.3.1)
#>  R6            2.5.1   2021-08-19 [1] CRAN (R 4.3.0)
#>  ragg          1.2.5   2023-01-12 [1] CRAN (R 4.3.0)
#>  reprex        2.0.2   2022-08-17 [1] CRAN (R 4.3.0)
#>  rlang         1.1.1   2023-04-28 [1] CRAN (R 4.3.0)
#>  rmarkdown     2.25    2023-09-18 [1] CRAN (R 4.3.1)
#>  rstatix       0.7.2   2023-02-01 [1] CRAN (R 4.3.1)
#>  rstudioapi    0.15.0  2023-07-07 [1] CRAN (R 4.3.1)
#>  scales        1.2.1   2022-08-20 [1] CRAN (R 4.3.0)
#>  sessioninfo   1.2.2   2021-12-06 [1] CRAN (R 4.3.0)
#>  styler        1.10.2  2023-08-29 [1] CRAN (R 4.3.1)
#>  systemfonts   1.0.4   2022-02-11 [1] CRAN (R 4.3.0)
#>  textshaping   0.3.6   2021-10-13 [1] CRAN (R 4.3.0)
#>  tibble        3.2.1   2023-03-20 [1] CRAN (R 4.3.0)
#>  tidyr         1.3.0   2023-01-24 [1] CRAN (R 4.3.0)
#>  tidyselect    1.2.0   2022-10-10 [1] CRAN (R 4.3.0)
#>  utf8          1.2.3   2023-01-31 [1] CRAN (R 4.3.0)
#>  vctrs         0.6.3   2023-06-14 [1] CRAN (R 4.3.1)
#>  withr         2.5.1   2023-09-26 [1] CRAN (R 4.3.1)
#>  xfun          0.40    2023-08-09 [1] CRAN (R 4.3.1)
#>  xml2          1.3.5   2023-07-06 [1] CRAN (R 4.3.1)
#>  yaml          2.3.7   2023-01-23 [1] CRAN (R 4.3.0)
#> 
#> 
#> ──────────────────────────────────────────────────────────────────────────────

Note that warnings in the first and third plots only show up in non-interactive sessions, but I left them in case they are helpful.

Setting the option is great, but ggpubr could detect the device better like what was done in tidyverse/ggplot2#5350

olivroy avatar Oct 05 '23 17:10 olivroy