2016-11-13 114 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)部分