2016-11-13 5 views
2

Gibt es eine Möglichkeit, einen ggplot mit drei Zeilen übereinander zu kommentieren, während die Textgrößen über die drei Zeilen gleich bleiben?R ggplot mit oben mit drei Werten und bnoup kommentiert

ich fast da bin, aber die Textgrößen sind unterschiedlich in der dritten Zeile, es sieht aus wie die bgroup nur die ersten beiden Zeilen mit und ich kann dieses Recht nicht bekommen ...

Ich füge den Text mit auf „oben auf“ Anwendungen „? plotmath“, die zu den beiden anderen Linien im Vergleich in einer anderen Größe kommt in Ordnung, aber der Text in der dritten Zeile funktioniert ...

library(ggplot2) 
line1 = "xxx data1" 
line2 = "yyy data2" 
line3 = "zzz data3" 

df=data.frame(x=rep(1:8, 3), y=c(0,1,3,4,5,6,7,8, 8,7,6,3,2,1,3,4, 0,2,4,5,6,7,8,9), variable=c("x", "x","x","x","x","x","x","x","y","y","y","y","y","y","y","y","z","z","z","z","z","z","z","z")) 
p <- ggplot(df) + theme_bw() + geom_point(aes(x=x,y=y, color=variable)) + geom_line(aes(x=x,y=y, color=variable)) + 
geom_text(x=max(df$x), y = max(df$y), label = paste('bgroup("{", atop(atop("',line1,'","',line2,'"),"', line3,'"), "}")',sep=''), size=3.5,parse=TRUE) 

ich dachte, ich war immer alles drei Zeilen innerhalb der bgroup, aber ich kann die Paste nicht richtig bekommen. Wenn es etwas gibt, das ich versuchen kann, bitte beraten. Vielen Dank!

+0

teilen Sie ein reproduzierbares Beispiel Ihrer Daten! –

Antwort

0

Um perfekt Zentrum alles (was \n nicht tun), jedes Stück Text hält die gleiche Größe, was die Anzahl der Zeilen und zugleich den interlinear Raum anpassen zu können, diese statt:

xlab(expression(atop(textstyle("whateverline1"),atop(textstyle("whateverline2"),atop(scriptscriptstyle(""),textstyle("whateverline3")))))) 

Dann labeller=label_parsed

verwenden Dies funktioniert auch für facet_grid, Titel und ylab

Notiere die atop und textstyle, um den Text bei gleich bleibender Größe zu positionieren, und scriptscriptstyle(""), um den Zeilenabstand zu steuern. Sie können auch verschiedene relative Größen von Text mit scriptstyle oder scriptscriptstyle je nach Ihren Bedürfnissen verwenden und natürlich verwenden element_text(size=whatevernumber) in Abschnitt