ggplot2绘图区边距?

123

有没有一种简单的方法来增加图表标题和下面的图表区域(即包含数据的框)之间的距离?同样,我希望在坐标轴标题和坐标轴标签之间有一些间隔。

换句话说,是否有一种方法可以“将标题向上移动一点,将y轴标题向左移动一点,将x轴标题向下移动一点”?


2
您可以随时在标题中添加 "\n" 字符以强制换行。 - joran
1个回答

168

您可以使用theme()中的plot.margin调整图形边距,然后使用element_text()vjust参数移动轴标签和标题。例如:

library(ggplot2)
library(grid)
qplot(rnorm(100)) +
    ggtitle("Title") +
    theme(axis.title.x=element_text(vjust=-2)) +
    theme(axis.title.y=element_text(angle=90, vjust=-0.5)) +
    theme(plot.title=element_text(size=15, vjust=3)) +
    theme(plot.margin = unit(c(1,1,1,1), "cm"))

这将给你类似于下面的结果:

在此输入图像描述

如果您想获取有关不同theme()参数及其参数的更多信息,只需在R提示符处输入?theme即可。


5
谢谢!我不确定在plot.margin参数中应该提供什么给 grid::units才能使它工作。结果证明,您必须向 units 提供长度为4的数字。很遗憾, unitsx 参数没有以某种方式被循环利用。此外,您可能已经知道,但值得注意/更新的是,在最新版本的 ggplot2(0.9.2+)中,opts已被弃用,替换为 theme ,而 theme_text现在被 element_text 替换。 - Paul 'Joey' McMurdie
64
plot.margin 的边缘顺序是 unit(c(top, right, bottom, left), units),如果其他人想要节省时间查找。 - mightypile
38
可能更容易记住的方法是根据这里所提到的:t, r, b, l(想象问题,以此记忆顺序) - Tung
9
要记住的另一种方法是:从顶部开始按顺时针方向记忆,依次为“top”(顶部)、“right”(右侧)、“bottom”(底部)、“left”(左侧)。 - spops
5
同时:margin(t, r, l, b) - Brian D
显示剩余5条评论

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