Comment ajouter un ggplot2 des sous-titres avec différentes taille et la couleur?
Je suis en utilisant ggplot2 pour améliorer les précipitations barplots.
Voici un exemple reproductible de ce que je veux réaliser:
library(ggplot2)
library(gridExtra)
secu <- seq(1, 16, by=2)
melt.d <- data.frame(y=secu, x=LETTERS[1:8])
m <- ggplot(melt.d, aes(x=x, y=y)) +
geom_bar(fill="darkblue") +
labs(x="Weather stations", y="Accumulated Rainfall [mm]") +
opts(axis.text.x=theme_text(angle=-45, hjust=0, vjust=1),
title=expression("Rainfall"), plot.margin = unit(c(1.5, 1, 1, 1), "cm"),
plot.title = theme_text(size = 25, face = "bold", colour = "black", vjust = 5))
z <- arrangeGrob(m, sub = textGrob("Location", x = 0, hjust = -3.5, vjust = -33, gp = gpar(fontsize = 18, col = "gray40"))) #Or guessing x and y with just option
z
Je ne sais pas comment faire pour éviter à l'aide de deviner les numéros sur hjust et vjust sur ggplot2? Est-il un meilleur moyen de mettre un sous-titre (et pas seulement à l'aide de \n, mais un sous-titre avec un texte différent de la couleur et de la taille)?
J'ai besoin d'être en mesure d'utiliser avec ggsave à un fichier pdf.
Voici deux questions connexes:
Ajouter une note de bas de page de citation à l'extérieur de la zone de traçage dans la R?
Merci pour toute aide.
- Le vjust=-33 a fonctionné pour moi sur Linux. Je sais que sous est faite pour aller en dessous de l'intrigue, mais c'était la seule façon que j'ai obtenu ce que je voulais.
- pour une raison quelconque, cela rend mon intrigue vraiment petit et crée un énorme espace en dessous du graphique
- s réponse semble être la voie à suivre aujourd'hui
Vous devez vous connecter pour publier un commentaire.
La dernière ggplot2 construit (c'est à dire, 2.1.0.9000 ou plus récent) sous-titres et en-dessous de leur lopin de terre de légendes comme fonctionnalité intégrée. Cela signifie que vous pouvez le faire:
Ignorer cette réponse
ggplot2
version 2.2.0 a titre et sous-titre de la fonctionnalité. Voir @hrbrmstr la réponse de ci-dessous.Vous pouvez utiliser imbriquée
atop
fonctions à l'intérieur d'unexpression
pour obtenir différentes tailles.MODIFIER code mis à Jour pour ggplot2 0.9.3
atop(italic("Location")
je voudrais avoir un objet:atop(italic(my_string_vector)
. J'ai essayé, mais les sous-titres évalués à (my_string_vector). Comment la force de cette expression à l'utilisation de la chaîne de valeur et de ne pas traiter le texte à la lettre?bquote
au lieu deexpression
, voir iciexpression
avecbquote
et envelopper les objets avec.()
, comme ça, pour un titre principal stockées dans un objet appelé "principal.le titre" et pour une des sous-titres stockés dans un objet appelé "sous.title":ggtitle(bquote(atop(.(main.title), atop(italic(.(sub.title)), ""))))
de Crédit va à Didzis Elferts de réponse ici: stackoverflow.com/questions/19957536/...Il semble
opts
est obsolète depuis la ggplot 2 0.9.1 et n'est plus fonctionnelle. Cela a fonctionné pour moi avec les dernières versions d'aujourd'hui:+ ggtitle(expression(atop("Top line", atop(italic("2nd line"), ""))))
., ""
- qu'est-ce que cette partie?atop()
est quelque chose comme une fraction, sans barres. Donc en mettant le deuxièmeatop()
à l'intérieur de la première vous donne une sous-fraction, avec le texte proportionnellement plus petites. Le""
est le bas de la sous-fraction. Il semble être inutile si - peut-êtreatop()
par défaut est une chaîne vide pour le deuxième paramètre, ou quelque chose.il n'est pas trop dur pour ajouter grobs à la gtable et de faire une fantaisie titre de cette façon,
Cette version utilise une
gtable
fonction. Il permet à deux lignes de texte dans le titre. Le texte, la taille, la couleur et la police de caractères de chaque ligne peut être réglé indépendamment de l'autre. Cependant, la fonction modifier un terrain avec une seule parcelle panneau uniquement.Mineur edit: mise à Jour de ggplot2 v2.0.0
Vous pouvez utiliser envelopper l'intrigue dans la grille.organiser et réussir un personnalisé basé sur une grille de titre,
Vous avez peut-être remarqué que de Sable du code n'est pas de produire un titre en gras pour "Pluie" - les instructions pour faire de ce gras doit se faire dans le sommet() la fonction plutôt que le thème de fonction ().