je cherche à faire une fonction qui renvoie un tri à plat dans un fichier pdf. Je voulais avoir le tri à plat dans un tableau avec pour titre le label de la variable. C'est pour cela que j'utilise la fonction tableGrob du package gtable comme ceci :
Code : Tout sélectionner
library(gridExtra)
library(grid)
library(gtable)
tri.plat <- function(variable){
tab.f <- wtd.table(variable,weights=don$Weight)
tab.f <-tab.f[[2]]
tab.t <- prop.table(tab.f)
tab.t <- round(tab.t,4)*100
tab <- cbind("Pourcentage"=tab.t,"Effectifs"=round(tab.f,0))
tab <- addmargins(tab,1)
rownames(tab)[nrow(tab)]<-"Total"
lab<-label(variable)
grid.newpage()
t1 <- tableGrob(tab)
title <- textGrob(lab,gp=gpar(fontsize=12))
padding <- unit(5,"cm")
title <- textGrob(lab,gp=gpar(fontsize=12))
table <- gtable_add_rows(t1,
heights = grobHeight(title)+padding
,pos = 0)
table <- gtable_add_grob(table, title,1,1,1,1)
grid.draw(table)
return(grid)
}
Ensuite j'écris le résultat de cette fonction pour plusieurs variable de mon data-frame "data" dans un fichier pdf :
Code : Tout sélectionner
pdf("tri.pdf")
for(i in 1:3){
tri.plat(data[,i])
}
dev.off
ça marche ! Mais j'ai deux problèmes :
1 - quand le label de la variable est trop long, il est coupé. On ne le voit pas en entier. Je voudrais qu'il passe automatiquement à la ligne quand il n'a pas la place de se mettre dans la fenêtre graphique.
2- quand le tableau est plus grand que la fenêtre graphique, il est coupé.
Avez-vous une solution pour forcer le titre à rentrer dans la fenêtre graphique ?
Merci