R lattice标题字体大小

时间:2014-07-29 15:25:33

标签: r lattice

我需要图表上的标题看起来像以下

Main

Submain

其中main的字体大小与子域不同,现在我把它作为main =" Main \ n submain"但是如何指定不同的尺寸。如果没有,我该如何添加另一个标题

2 个答案:

答案 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"))

enter image description here

您可以清楚地看到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))))
)