2016-11-13 118 views
2

有沒有任何方法來註釋一個ggplot與三個一個在另一個上面,而保持文本大小相同的三條線?R ggplot使用三個值註釋頂部使用三個值和bgoup

我幾乎有,但文本大小在三線不同,它看起來像bgroup中只使用前兩行,我不能得到這個權利...

我使用添加文本以「頂上」,從「?plotmath」,它工作正常,但在第三行文字出來,在比其他兩行不同的大小...應用

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) 

我想我是讓所有的bgroup內有三行,但我無法正確粘貼。如果有什麼我可以嘗試,請告知。非常感謝!

+0

共享您的數據的可重複的示例! –

回答

0

完美中心的一切(這\n不會做),保持每一段文字同樣大小的任何行,並在同一時間能夠調整行間空間的數量,用這個來代替:

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

然後使用labeller=label_parsed

這也適用於facet_grid,標題和ylab

注意atoptextstyle來放置文本,同時保持所有的大小和scriptscriptstyle("")來控制行之間的間距。您還可以根據您的需要使用scriptstylescriptscriptstyle使用各種相對大小的文本,當然也可以使用部分中的element_text(size=whatevernumber)部分