Text unter dem von ggplot2 erzeugten Plot anzeigen
Ich versuche, einige Informationen über die Daten, die unterhalb der plot in ggplot2. Ich möchte, um den Verlauf der N Variablen, die mit der X-Achse Koordinate der Handlung, sondern die Y-Koordinate muss 10% von der Unterseite des Bildschirms . In der Tat, die gewünschte Y-Koordinaten sind bereits in den Daten-frame als y_pos variable.
Ich kann mir denken, 3 Ansätze mit ggplot2:
1) Erstellen Sie ein leeres Grundstück unterhalb der eigentlichen Handlung, die die gleiche Skala verwenden, und verwenden Sie dann geom_text, um den Verlauf der Daten über das leere Grundstück. Dieser Ansatz Art funktioniert, ist aber extrem kompliziert.
2) Verwenden geom_text
zu zeichnen, die Daten aber irgendwie verwenden die y-Koordinate als Prozent des Bildschirms (10%). Diese zwingen würde, die zahlen angezeigt werden, unten die Handlung. Ich kann nicht herausfinden, die richtige syntax.
3) Verwenden Sie grid.text um den text anzuzeigen. Ich kann einfach legen Sie es auf die 10% aus dem unteren Rand des Bildschirms, aber ich kann nicht herausfinden, wie den X-coordindate entsprechend die Handlung. Ich habe versucht, grconvert zu erfassen, die anfangs-X-position, konnte aber keine, die so gut funktionieren.
Unten ist der grundlegende plot mit der dummy-Daten:
graphics.off() # close graphics windows
library(car)
library(ggplot2) #load ggplot
library(gridExtra) #load Grid
library(RGraphics) # support of the "R graphics" book, on CRAN
#create dummy data
test= data.frame(
Group = c("A", "B", "A","B", "A", "B"),
x = c(1 ,1,2,2,3,3 ),
y = c(33,25,27,36,43,25),
n=c(71,55,65,58,65,58),
y_pos=c(9,6,9,6,9,6)
)
#create ggplot
p1 <- qplot(x, y, data=test, colour=Group) +
ylab("Mean change from baseline") +
geom_line()+
scale_x_continuous("Weeks", breaks=seq(-1,3, by = 1) ) +
opts(
legend.position=c(.1,0.9))
#display plot
p1
Den geänderten gplot unten zeigt die zahlen von Themen, aber Sie sind angezeigt, die INNERHALB der Handlung. Sie zwingen die Y-Skalierung erweitert werden. Ich möchte zeigen diese zahlen UNTER dem plot.
p1 <- qplot(x, y, data=test, colour=Group) +
ylab("Mean change from baseline") +
geom_line()+
scale_x_continuous("Weeks", breaks=seq(-1,3, by = 1) ) +
opts( plot.margin = unit(c(0,2,2,1), "lines"),
legend.position=c(.1,0.9))+
geom_text(data = test,aes(x=x,y=y_pos,label=n))
p1
Einen anderen Ansatz der Darstellung von Ziffern beinhaltet die Erstellung eines dummy-plot unterhalb der eigentlichen Handlung. Hier ist der code:
graphics.off() # close graphics windows
library(car)
library(ggplot2) #load ggplot
library(gridExtra) #load Grid
library(RGraphics) # support of the "R graphics" book, on CRAN
#create dummy data
test= data.frame(
group = c("A", "B", "A","B", "A", "B"),
x = c(1 ,1,2,2,3,3 ),
y = c(33,25,27,36,43,25),
n=c(71,55,65,58,65,58),
y_pos=c(15,6,15,6,15,6)
)
p1 <- qplot(x, y, data=test, colour=group) +
ylab("Mean change from baseline") +
opts(plot.margin = unit(c(1,2,-1,1), "lines")) +
geom_line()+
scale_x_continuous("Weeks", breaks=seq(-1,3, by = 1) ) +
opts(legend.position="bottom",
legend.title=theme_blank(),
title.text="Line plot using GGPLOT")
p1
p2 <- qplot(x, y, data=test, geom="blank")+
ylab(" ")+
opts( plot.margin = unit(c(0,2,-2,1), "lines"),
axis.line = theme_blank(),
axis.ticks = theme_segment(colour = "white"),
axis.text.x=theme_text(angle=-90,colour="white"),
axis.text.y=theme_text(angle=-90,colour="white"),
panel.background = theme_rect(fill = "transparent",colour = NA),
panel.grid.minor = theme_blank(),
panel.grid.major = theme_blank()
)+
geom_text(data = test,aes(x=x,y=y_pos,label=n))
p2
grid.arrange(p1, p2, heights = c(8.5, 1.5), nrow=2 )
Aber das ist sehr kompliziert und schwer zu ändern, für die verschiedenen Daten. Im Idealfall würde ich mag in der Lage sein, um pass Y-Koordinaten als Prozent des Bildschirms.
InformationsquelleAutor der Frage Max C | 2012-04-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bearbeitet
opts
ist veraltet, ersetzt durchtheme
;element_blank
ersetzttheme_blank
; undggtitle()
verwendet wird, inopts(title = ...
Sandy - vielen Dank!!!!! Diese macht genau das, was ich will. Ich wünschte, wir könnten die Steuern, die Beschneidung von geom.text oder geom.mit Anmerkungen versehen.
Ich habe das folgende Programm, wenn jemand anderes interessiert ist.
InformationsquelleAutor der Antwort Max C
Die aktuelle version (>2.1) hat ein
+ labs(caption = "text")
zeigt eine Beschriftung unter der Darstellung. Dies ist optisch anpassbare (schriftart-Eigenschaften,... Links/rechts ausgerichtet). Sehen https://github.com/hadley/ggplot2/pull/1582 für Beispiele.InformationsquelleAutor der Antwort Jan Katins
Aktualisiert
opts()
wurde ersetzt mittheme()
In der Sie den code unten ein Basis-plot gezeichnet, mit einem breiteren Rand an der Unterseite der Handlung. Die textGrob wird erstellt, und dann eingefügt in die Handlung mit annotation_custom(). Außer der text ist nicht sichtbar, weil es außerhalb der Parzelle aus - die Ausgabe ist abgeschnitten, um das panel. Aber mit baptiste code von hier ausdas clipping kann overrridden. Die position ist in Bezug auf die Daten-Einheiten, und beide Bezeichnungen sind zentriert.
Oder mit
grid
Funktionen zu erstellen und die position der label.Bearbeiten
Oder, fügen Sie text grob mit gtable-Funktionen.
InformationsquelleAutor der Antwort Sandy Muspratt
Eigentlich die beste Antwort und einfachste Lösung ist die Verwendung der cowplot Paket.
Version 0.5.0 des cowplot Paket (auf CRAN) Griffe ggplot2 Untertitel mit den add_sub Funktion.
Verwenden Sie es wie so:
InformationsquelleAutor der Antwort Taylor C. White