Bonjour,
La taille n'existe pas (en dehors d'un export).
C'est un paramètre lors de l'export sur un périphérique graphique et dépend pour les périphériques type "raster" (comme png, jpg), de la résolution, de la hauteur et de la largeur de l'image. Pour les périphériques vectorielles (svg, emf, eps, etc.), uniquement de la dimension physique dans le système métrique/impériale (ou en pixel).
Est-ce pertinent d'avoir un graphique de 50 cm de large ?
Code : Tout sélectionner
df <- data.frame(
k1 = c("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"),
k2 = c(1,5,0,12,5,10,4,5,6,7,8,2,14,20,1,5,1,8,7,6,3,6,4,5,8,3)
)
library("ggplot2")
p <- ggplot(df) +
aes(x = k1, y = k2, fill = k2, na.rm = TRUE) +
geom_col() +
geom_text(aes(label = k2), position = position_stack(vjust = 0.5), size = 3)
Par exemple avec {ragg} pour générer des fichiers png via agg.
Code : Tout sélectionner
library("ragg")
agg_png(filename = "file.png", width = 8, height = 6, units = "cm", res = 120)
print(p)
invisible(dev.off())
Code : Tout sélectionner
library("ragg")
agg_png(filename = "file.png", width = length(p$data[["k1"]]) / 13 * 8, height = 6, units = "cm", res = 120)
print(p)
invisible(dev.off())
EDIT : J'avais aussi pensé à facet_wrap() comme Pierre-Yves le propose, mais cela déplace le problème d'une dimension à deux dimensions.
Un mélange des deux approches serait potentiellement le mieux dans beaucoup de cas.
EDIT2 : Une autre approche pour générer des morceaux de graphiques indépendants.
Les graphiques sont combinable multipage avec pdf() par exemple pour la sortie, ou en mode {patchwork} (wrap_plots(lp)).
Code : Tout sélectionner
df <- data.frame(
k1 = c("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"),
k2 = c(1,5,0,12,5,10,4,5,6,7,8,2,14,20,1,5,1,8,7,6,3,6,4,5,8,3)
)
Code : Tout sélectionner
library(ggplot2)
p <- ggplot(df) +
aes(x = k1, y = k2, fill = k2, na.rm = TRUE) +
geom_col() +
geom_text(aes(label = k2), position = position_stack(vjust = 0.5), size = 3)
Code : Tout sélectionner
lp <- lapply(
X = split(
x = df,
f = cut(
x = rank(df[["k1"]]),
breaks = c(seq(from = 0, to = nrow(df), by = 13), Inf),
include.lowest = TRUE
)
),
.plot = p,
FUN = function(.x, .plot) {
.plot$data <- .x
.plot
}
)
Cordialement,