Я генерирую графику с помощью spplot, и у меня проблемы с полями.
library(sp)
library(grid)
library(gridExtra)
demo(meuse, ask = FALSE, echo = FALSE)
p = spplot(meuse, c("zinc"), aspect=0.1)
tg <- textGrob('title', gp = gpar(fontsize = 14, fontface = "bold"))
sg <- textGrob('subtitle', gp = gpar(fontsize = 10))
grid.newpage()
grid.arrange(tg, sg, p, ncol = 1, heights = unit.c(3*grobHeight(tg), grobHeight(sg), unit(1, "grobheight", data= grob(p))))
Когда соотношение сторон близко к 1, все выглядит почти нормально, но боковые поля все еще раздражают:
Однако в моем основном случае использования соотношение ближе к 0,1, и в этом случае верхнее и нижнее поля очень очевидны:
Как я могу взять это под контроль, удалить все поля вокруг spplot и самому обработать это с помощью сетки.





Высота результирующего изображения определяется размером устройства, на котором вы его рисуете, поэтому у вас будет дополнительное пустое пространство, если ваше устройство, например, выше, чем необходимо. В этом случае, установив высоту и ширину, я могу получить разумный результат.
png(width = 10, height = 3, units = "in", res = 100)
grid.arrange(tg, sg, p, ncol = 1,
heights = unit.c(3*grobHeight(tg), grobHeight(sg),
unit(1, "grobheight", data= grob(p))))
dev.off()
Можете ли вы явно установить xlim и ylim? spplot(meuse, c("цинк"), аспект=1, xlim = c(min(meuse@coords[,1]), max(meuse@coords[,1])), ylim = c(min(meuse@ координаты[,2]), max(meuse@coords[,2])) )