ggplot2 permet aussi de faire des graphiques plus complexes, et parce qu’ils sont extrêmement customisables, de les mettre en forme pour l’impression, directement dans R.
# ce graphique est stocké dans l'objet "ga"
ga <- ggplot(p_eff2[[1]], aes(x = ID_SITE, y = CT2, color = site)) +
# p_eff2 correspond aux données qui détaillent des types d'objets par sites
# mise en forme des titres et des axes
labs(size = "Effectifs", color = "", title = periode_names[[1]], subtitle =
"Répartition des types par sites") +
xlab("Sites") +
ylab("Types et sous-types d'objets") +
# ajout d'annotation pou faciliter la lecture
annotate("rect", xmin = -Inf, xmax = Inf, ymin = first(o_list2[[1]][[1]]),
ymax = "DBA11000", fill = "coral1", alpha = 0.3) +
annotate("text", x = "SIT0940", y = "BbG7a000", label = "Bagues", size =
rel(2), colour = "grey23", fontface = "bold") +
annotate("rect", xmin = -Inf, xmax = Inf, ymin = "DBA11000", ymax =
"DBHH000T", fill = "darkslategray3", alpha = 0.3) +
annotate("text", x = "SIT0940", y = "DBG3B00u", label = "Bracelets", size =
rel(2), colour = "grey23", fontface = "bold") +
annotate("segment", x = -Inf, xen = Inf, y = "ECAA2000", yend = "ECAA2000",
colour = "gold2",
alpha = 0.3, size = 2) +
annotate("text", x = "SIT0940", y = "ECAA2000", label = "Ceintures", size =
rel(2), colour = "grey23", fontface = "bold") +
annotate("rect", xmin = -Inf, xmax = Inf, ymin = first(o_list2[[1]][[4]]),
ymax = last(o_list2[[1]][[4]]), fill = "navajowhite4", alpha = 0.3) +
annotate("text", x = "SIT0940", y = "IMRâR000", label = "Monnaies", size =
rel(2), colour = "grey23", fontface = "bold") +
annotate("segment", x = -Inf, xen = Inf, y = first(o_list2[[1]][[5]]),
yend = last(o_list2[[1]][[5]]), colour = "chartreuse2",
alpha = 0.3, size = 2) +
annotate("text", x = "SIT0940", y = "KpA11000", label = "Pendentifs", size =
rel(2), colour = "grey23", fontface = "bold") +
annotate("rect", xmin = -Inf, xmax = Inf, ymin = "KpA11000", ymax = "LPZS400B",
fill = "Khaki2", alpha = 0.3) +
annotate("text", x = "SIT0940", y = "LPZA000A", label = "Perles", size =
rel(2), colour = "grey23", fontface = "bold") +
# Détermine le type de graphique
## ici = nuage de point en fonction de deux variables non continues
geom_count(alpha = .6) +
# déterminer l'échelle et ses informations
scale_size(breaks = c(1, 15, 30), range = c(1, 4), labels =
c("1", "<15", "15<30")) +
scale_color_manual(breaks = c("1", "2"), values = c("grey28", "red3", "blue3"),
labels = c("Types présents \n sur une majorité \n de sites",
"Sites avec une \n majorité de types")) +
scale_y_discrete(breaks = c("DBGcB004", "DBH3a00B", "LPH2000t"), labels =
c("Gebhard s. 38", "Haev. 3a", "Haev. 20")) +
scale_x_discrete(breaks = c("SIT0001","SIT0086", "SIT0095", "SIT0175"),
labels = c("Wederath","La Bure", "Bâle-Gasfabrik",
"Kirchzarten")) +
# mise en page du graphique et de la légende
theme_minimal() +
theme(axis.text = element_text(size = rel(0.6), face = 2, hjust = 1)) +
theme(axis.text.x = element_text(angle = 90)) +
theme(axis.title = element_text(size = rel(0.8), face = "bold")) +
theme(legend.box.background = element_rect(fill = "white", colour = "grey28")) +
theme(legend.text = element_text(size = rel(0.6))) +
theme(legend.title = element_text(size = rel(0.6))) +
theme(legend.position = "top", legend.justification = "right") +
guides(colour = guide_legend(override.aes = list(size = 3))) +
theme(plot.title = element_text(size = rel(1.2), face = "bold")) +
theme(plot.subtitle = element_text(size = rel(1)))
# pour ajouter du texte sur le graphique
ga <- ggdraw(add_sub(ga, label = "L. Scholtus", y = 20.8, x = 0.95, hjust = 0,
size = 5))
# pour exporter le graphique en png et en définir les dimensions
ggsave(paste0("03Figures/periode/P1.png"), plot = ga, width = 22, height = 16,
units = "cm")