Подтвердить что ты не робот

Увеличение площади участка в ggplot для работы с geom_text на границах графика

Как увеличить площадь серого графика диаграммы с одной осью основанной на коэффициенте и одной числовой осью, чтобы отображались текстовые метки на участках geom_text() и не выходили за пределы области графика?

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

В частности, я хотел бы расширить область серого, чтобы обеспечить область поля в области графика, которая позволяет текстовым ярлыкам появляться в полном объеме.

Или есть лучший способ?

4b9b3361

Ответ 1

Вы можете изменить вариант макета для каждого 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")))

Очевидно, что текстовые метки не распространяются за пределы области графика. Но следующий код позволяет просто:

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, чтобы сэкономить время.