Ich benutze ggplot2, um Niederschlags-Barplots zu verbessern.
Hier ist ein reproduzierbares Beispiel dafür, was ich erreichen möchte:
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
Ich weiß nicht, wie ich es vermeiden soll, auf hjust und vjust auf ggplot2 zu raten? Gibt es eine bessere Möglichkeit, einen Untertitel einzufügen (nicht nur mit \ n, sondern mit einem Untertitel mit unterschiedlicher Textfarbe und -größe)?
Ich muss in der Lage sein, mit ggsave eine PDF-Datei zu haben.
Hier sind zwei verwandte Fragen:
Hinzufügen eines Fußnotenzitats außerhalb des Grundstücksbereichs in R?
Wie kann ich einen Untertitel hinzufügen und die Schriftgröße von ggplot-Plots in R ändern?
Vielen Dank für jede Hilfe.
Antworten:
Die neuesten ggplot2-Builds (dh 2.1.0.9000 oder neuer) verfügen über Untertitel und Untertitel unter dem Plot als integrierte Funktionalität. Das heißt, Sie können dies tun:
quelle
Diese Antwort ignorieren
ggplot2
Version 2.2.0 verfügt über Titel- und Untertitelfunktionen. Siehe die Antwort von @ hrbrmstr unten .Sie können verschachtelte
atop
Funktionen in einem verwendenexpression
, um verschiedene Größen zu erhalten.EDIT Aktualisiert Code für ggplot2 0.9.3
quelle
atop(italic("Location")
möchte ich ein Objekt haben :atop(italic(my_string_vector)
. Ich habe das versucht, aber dann wurde der Untertitel zu (my_string_vector) ausgewertet . Wie kann man diesen Ausdruck zwingen, den Zeichenfolgenwert zu verwenden und den bereitgestellten Text nicht wörtlich zu behandeln?bquote
anstelle von verwenden solltenexpression
, siehe hierexpression
mitbquote
und wickeln Sie die Objekte mit.()
, wie diese, für einen Haupttitel in einem Objekt gespeichert als „main.title“ und für einen Untertitel in einem Objekt gespeichert namens „sub.title“:ggtitle(bquote(atop(.(main.title), atop(italic(.(sub.title)), ""))))
Kredit geht zu Didzis Elferts 'Antwort hier: stackoverflow.com/questions/19957536/…Es scheint
opts
ab ggplot 2 0.9.1 veraltet und nicht mehr funktionsfähig zu sein. Dies funktionierte bei mir mit den neuesten Versionen ab heute :+ ggtitle(expression(atop("Top line", atop(italic("2nd line"), ""))))
.quelle
, ""
- wofür ist dieser Teil?atop()
ist so etwas wie ein Bruchteil ohne Balken. Wenn Sie also die zweiteatop()
in die erste setzen, erhalten Sie einen Unterbruch, wobei der Text proportional kleiner ist. Das""
ist der Boden der Unterfraktion. Es scheint jedoch unnötig zu sein - hat möglicherweiseatop()
eine leere Standardzeichenfolge für den zweiten Parameter oder so.Es ist nicht allzu schwer, dem gtable Grobs hinzuzufügen und auf diese Weise einen ausgefallenen Titel zu erstellen.
quelle
Diese Version verwendet eine
gtable
Funktion. Es erlaubt zwei Textzeilen im Titel. Der Text, die Größe, die Farbe und die Schriftfläche jeder Zeile können unabhängig voneinander festgelegt werden. Die Funktion ändert jedoch ein Diagramm nur mit einem einzelnen Diagrammfenster.Kleinere Änderungen: Aktualisierung auf ggplot2 v2.0.0
quelle
Sie können das Diagramm in grid.arrange umbrechen und einen benutzerdefinierten gitterbasierten Titel übergeben.
quelle
Möglicherweise haben Sie bemerkt, dass Sandys Code keinen fett gedruckten Titel für "Rainfall" erzeugt. Die Anweisung, dies fett zu machen, sollte in der Funktion atop () und nicht in der Funktion theme () erfolgen.
quelle