如何改变ggplot标题的垂直位置,而不改变坐标轴标签的对齐方式。

10

编辑:问题是由于我错误地尝试更改theme(title = element_text()),而实际上我需要更改theme(plot.title(element_text())。如果我仔细审查了theme()文档,我本应该注意到这一点。

原始帖子:

更改标题的垂直对齐方式会同时更改x轴和y轴标签的位置。这是一个bug吗?还是我误解了theme()函数的作用?我正在运行ggplot2版本0.9.3.1

最小可复现示例。

require(ggplot2)
set.seed(12345)
x <- rnorm(100,10,0.5)
y <- x * 3 + rnorm(100)
df <- data.frame(y,y)

默认标题距离图表太近,不符合我的口味...

ggplot(df,aes(x,y)) + 
geom_point() + 
labs(title="My Nice Graph")

当我尝试移动标题时,轴标签也会移动,并且在图表上不可读。

ggplot(df,aes(x,y)) + 
geom_point() + 
labs(title="My Nice Graph") + 
theme(title = element_text(vjust=2))

这里输入图像描述


1
使用 theme(plot.title = element_text(vjust=2))。在这里查看:http://docs.ggplot2.org/current/theme.html:“标题:所有标题元素:图表、轴、图例”。 - Henrik
2个回答

28

你想使用 plot.title 而不是 title

labs(title="My Nice Graph") + theme(plot.title = element_text(vjust=2))

替代的快速解决方法是添加一个换行符:
  labs(title="My Nice Graph\n")

非常感谢你,Ricardo。我想我无意中全局设置了vjust... - Andrew Barr
换行符可以使用,但是@george-dontas的margin方法似乎更好(至少对我来说)。 - Jindra Lacko

7

vjust 对我无效(我认为值应该在 [0, 1] 范围内)。我使用:

... +
theme(
  plot.title = element_text(margin=margin(b = 10, unit = "pt"))
)

由于未知原因,vjust 对我也不起作用,但 margin 可以。 - fred
我记得在较新版本的ggplot2中,vjust功能被移除了... - s_baldur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接