使用ggplot2
,我希望在同一行的标题下有两个字幕,但一个左对齐,一个右对齐,以形成如下所示的多面图。
我可以让字幕左对齐:
p <- ggplot(mtcars, aes(mpg, hp)) +
geom_point() +
facet_grid(am~.) +
theme(plot.title=element_text(hjust=0.5))
p + labs(title="Data: mtcars", subtitle="Subtitle (left-aligned)")
或右对齐,
p + labs(title="Data: mtcars", subtitle="Subtitle (right-aligned)") +
theme(plot.subtitle=element_text(hjust=1))
但我似乎无法同时实现两者,除非我将它们组合起来,并在它们之间留出任意数量的空格(这就是我上面绘制图表的方法)。但我不喜欢这个解决方案。还有其他方法吗?
虽然有点骇人听闻,但确实有效。你可以传递一个向量给它,
subtitle=
并通过传递一个向量给它来设置每个元素的对齐方式hjust=
(当然,官方不支持这种方式):这有点儿牵强,但你可以做这样的事情......
或者(更好,按照下面 Stefan 的评论),使用
annotate
...blank
subtitle
参数只是创建了一点空间。最后一个参数clip = "off"
允许你在正常绘图区域之外绘图。该I(0)
符号允许你使用相对坐标,其中 0 表示左/下,1 表示右/上。我不得不使用这个符号y=I(2.1)
,因为你的绘图中有两个面,所以y=I(1)
下面的顶部也是如此。