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

Missing font warnings generated by gganimate when using showtext #482

Closed
caldwellst opened this issue May 30, 2023 · 1 comment
Closed

Comments

@caldwellst
Copy link

caldwellst commented May 30, 2023

When using showtext to access and use Google fonts in ggplot2, I am getting missing font warnings when using gganimate::transition_time().

Plotting a static plot works as expected.

library(ggplot2)
library(gganimate)
library(showtext)
#> Loading required package: sysfonts
#> Loading required package: showtextdb

font_add_google("Source Sans Pro")
showtext_auto()

df <- data.frame(
  year = c(2010, 2010, 2010, 2013, 2013,2013, 2014,2014,2014),
  category = c("A", "B", "C", "A", "B", "C", "A", "B", "C"),
  pct_val = c(0.05, 0.12, 0.21, 0.37, 0.44, 0.53, 0.69, 0.76, 0.82)
)

p <- ggplot(
  data = df,
  mapping = aes(
    x = category,
    y = pct_val
  )
) +
  geom_bar(stat = "identity") +
  coord_flip() +
  theme(
    text = element_text(family = "Source Sans Pro")
  )

p

However, warnings are generated once transition_time() is called. The fonts still appear, but raising an issue in case this is indicative of a deeper problem.

p + transition_time(year)
#> Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : no
#> font could be found for family "Source Sans Pro"

#> Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : no
#> font could be found for family "Source Sans Pro"
#> Warning: Cannot get dimensions of plot table. Plot region might not be fixed

However, this problem goes away if I install Source Sans Pro on my machine directly. Thus it appears to be something related to how showtext and gganimate work on the backend.

Session info

sessionInfo()
#> R version 4.2.3 (2023-03-15)
#> Platform: x86_64-apple-darwin17.0 (64-bit)
#> Running under: macOS Big Sur ... 10.16
#> 
#> Matrix products: default
#> BLAS:   /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRblas.0.dylib
#> LAPACK: /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRlapack.dylib
#> 
#> locale:
#> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> other attached packages:
#> [1] showtext_0.9-5  showtextdb_3.0  sysfonts_0.8.8  gganimate_1.0.8
#> [5] ggplot2_3.4.2  
#> 
#> loaded via a namespace (and not attached):
#>  [1] pillar_1.9.0      compiler_4.2.3    prettyunits_1.1.1 tools_4.2.3      
#>  [5] progress_1.2.2    digest_0.6.31     jsonlite_1.8.4    evaluate_0.20    
#>  [9] lifecycle_1.0.3   tibble_3.2.1      gtable_0.3.3      pkgconfig_2.0.3  
#> [13] rlang_1.1.1       reprex_2.0.2      cli_3.6.1         rstudioapi_0.14  
#> [17] curl_5.0.0        yaml_2.3.7        xfun_0.39         fastmap_1.1.1    
#> [21] withr_2.5.0       dplyr_1.1.2       knitr_1.42        generics_0.1.3   
#> [25] fs_1.6.1          vctrs_0.6.2       hms_1.1.3         grid_4.2.3       
#> [29] tidyselect_1.2.0  glue_1.6.2        R6_2.5.1          gifski_1.12.0    
#> [33] fansi_1.0.4       rmarkdown_2.21    farver_2.1.1      tweenr_2.0.2     
#> [37] magrittr_2.0.3    scales_1.2.1      htmltools_0.5.5   colorspace_2.1-0 
#> [41] labeling_0.4.2    utf8_1.2.3        stringi_1.7.12    munsell_0.5.0    
#> [45] crayon_1.5.2
@thomasp85
Copy link
Owner

showtext hacks into the current graphic device and it is very likely that the multiple calls gganimate has to do somehow messes up showtext. I'm not going to do something special to accommodate the showtext hack as there are now much better and supported ways to get modern font support in R (e.g. using the ragg devices)

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

No branches or pull requests

2 participants