我需要图表上的标题看起来像以下
Main
Submain
其中main的字体大小与子域不同,现在我把它作为main =" Main \ n submain"但是如何指定不同的尺寸。如果没有,我该如何添加另一个标题
答案 0 :(得分:2)
使用晶格这些任务都不是很容易;但这并不意味着它是不可能的。除了接受main=
参数的字符值之外,它还可以接受任意grid
个对象(或grob
)。莱迪思构建于grid
图形库之上,因此您可以在绘图之前自定义许多内容。这是一个使用辅助函数创建具有两行文本的grid
对象的解决方案。
library(lattice)
library(grid)
doubleTitle <- function(a,b) {
gTree(children=gList(
textGrob(a, gp=gpar(fontsize=15, fontface=2), y=0,
vp=viewport(layout.pos.row=1, layout.pos.col=1)),
textGrob(b, gp=gpar(fontsize=13, fontface=3), y=0,
vp=viewport(layout.pos.row=2, layout.pos.col=1))
), vp=viewport(layout=grid.layout(nrow=2, ncol=1)), cl="doubletitle")
}
heightDetails.doubletitle <- function(x, recording=T) {
Reduce(`+`, lapply(x$children, grid:::heightDetails.text)) * 2
}
我们可以将它与
一起使用xyplot(1:10~1:10, main=doubleTitle("Main","Submain"))
您可以清楚地看到fontsize=
选项。对于fontface=
,1表示正常,2表示粗体,3表示斜体,4表示粗体+斜体。要更改行之间的间距,请调整2
函数中的heightDetails.doubletitle
值。
答案 1 :(得分:0)
虽然我非常喜欢MrFlick解决方案,但我想基于main=
也可以接受表达式参数的事实来添加另一种可能性
xyplot(1:10~1:10,
main = expression(atop(bold(Main~Title), italic(scriptstyle(Sub~Title))))
)