flextable 0.5.4 est maintenant sur le CRAN. Cette version contient une nouvelle option de sortie qui répond à la demande de quelques utilisateurs : la capacité à sauver les flextables en tant qu’images grâce à la fonction save_as_image.

La solution existait déjà mais elle était un peu perdue dans une question de stackoverflow au lieu d’être implémentée proprement dans flextable.

Cette fonctionnalité a ouvert d’autres possibilités ; vous pouvez maintenant utiliser la méthode plot, ainsi que as_raster, et faire du raster ce que vous voulez (par exemple le combiner avec un objet ggplot).

Demo

D’abord, on créer un flextable simple.

library(flextable)
ft <- flextable( head( mtcars ) )
ft <- autofit(ft)
ft

Si on souhaite le sauver en png, on peut utiliser le code suivant :

save_as_image(ft, path = "name.png")

On peut aussi utiliser la fonction plot :

plot(ft)

Ou encore le combiner avec un graphique ggplot :

library(ggplot2)
library(grid)
library(cowplot)

anyplot <- qplot(speed, dist, data = cars, geom = "point")

ft_raster <- as_raster(ft)

gflextable <- ggplot() +
  theme_void() +
  annotation_custom(rasterGrob(ft_raster),
    xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf)

plot_grid(anyplot, gflextable, nrow = 2, ncol = 1, rel_heights = c(4, 1))

Note à propos de la largeur et hauteur

Il peut être intéressant de connaître les dimensions exactes d’un flextable. Pour cela, on utilise la fonction flextable_dim() qui va renvoyer les dimensions et le ratio d’aspect.

dims <- flextable_dim(ft)
dims
#> $widths
#> [1] 6.186252
#> 
#> $heights
#> [1] 2.800021
#> 
#> $aspect_ratio
#> [1] 0.4526199

Il faudra par exemple utiliser ces informations pour renseigner les options knitr du chunk qui produit le graphique avec plot : fig.asp, fig.width et fig.height.


Suivez nous:  -  Sites recommandés: R-bloggers R weekly Twitter #rstats Jobs for R-users