web-dev-qa-db-fra.com

Comment spécifier la taille d'un graphique dans ggplot2 indépendamment des étiquettes d'axe

Disons que j'ai un bloc de données et que je veux faire un tracé

df <- melt(iris)

p <- ggplot(data = df, aes(x = Species, y = value)) + 
       geom_boxplot() + theme(aspect.ratio = 1)

Je veux ensuite utiliser ggsave () pour enregistrer un pdf de ce tracé

ggsave(plot = p, width = 3, height = 3, dpi = 300, filename = "not squished axis.pdf")

enter image description here

Le problème est que je veux spécifier les dimensions du tracé lui-même mais indépendamment des étiquettes d'axe afin que le tracé spécifié ci-dessous ait la même taille et les mêmes dimensions en termes de longueur absolue des axes.

q <- ggplot(data = df, aes(x = Species, y = (value)*10000000)) +
       geom_boxplot() + theme(aspect.ratio = 1)

ggsave(plot = q, width = 3, height = 3, dpi = 300, filename = "squished axis.pdf")

enter image description here

Existe-t-il un moyen de le faire facilement?

Voici un exemple de tracé plus proche de ce que j'aimerais en termes de longueurs d'axe:

enter image description here

le seul problème est qu'en changeant le rapport d'aspect, je finis par écraser l'axe y pour rendre l'axe x plus proche de même en longueur ...

3
John Gagnon

Je pense qu'il est un peu tard, mais j'ai résolu ce problème en corrigeant le nchar des étiquettes. Ce n'est pas une solution très générale, je sais. J'avais besoin de 30 parcelles séparées (ou plus). Le nombre d'observations où dans un grob sous-jacent séparé, donc l'axe des x doit être de taille fixe. J'espère que cela aidera quelqu'un

0
marina