增加ggplot中的绘图区域以处理绘图边缘处的geom_text

时间:2012-09-17 20:19:00

标签: r plot

如何使用基于因子的轴和一个数字轴增加图表的灰色区域,以便geom_text()图中的文本标签在视图中并且不会延伸到绘图区域之外?

ggplot showing geom_text() plot where labels extend outside the plot area

特别是,我想扩展灰色区域以在绘图区域内提供允许文本标签完整显示的边距区域。

或者有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用ggplot_gtable更改每个ggplot的布局选项,然后使用grid.arrange显示所有图。

library(ggplot2)
library(gridExtra)
## create a dummy ggplot
(g1 <- ggplot(mtcars, aes(wt, mpg)) + 
       geom_text(aes(label=rownames(mtcars)), size=6, angle=45) +
       theme(plot.margin = unit(rep(1, 4), "cm")))

显然文本标签不会延伸到绘图区域之外。但是下面的代码只允许:

gg_table <- ggplot_gtable(ggplot_build(g1))
gg_table$layout$clip[gg_table$layout$name=="panel"] <- "off"
grid.draw(gg_table)

为每个面板创建一个gg_table,然后使用grid.arrange显示所有:

grid.arrange(gg_table, gg_table, gg_table, gg_table, ncol=2)

enter image description here

我知道这是劳动密集型的,但您可以编写一个函数来创建多个ggplots和gg_tables以节省时间。