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

psy*_*dia 14 plot r

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

ggplot显示geom_text()图,其中标签延伸到绘图区域之外

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

或者,还有更好的方法?

Mas*_*awa 4

您可以使用 更改每个 ggplot 的布局选项ggplot_gtable,然后使用 来显示所有绘图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")))
Run Code Online (Sandbox Code Playgroud)

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

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

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

grid.arrange(gg_table, gg_table, gg_table, gg_table, ncol=2)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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