Как масштабировать все содержимое подзаговора? - PullRequest
0 голосов
/ 07 ноября 2019

Я не могу найти способ масштабирования всего сюжета (текст, строки и т. Д.). Все, что я пробовал (annotation_custom with ord_cartesian, ggdraw и draw_plot) масштабирует ограничивающий прямоугольник, но не его содержимое.

Я бы хотел избежать рендеринга графика, а затем использовать изображение. Любая помощь приветствуется.

Пример кода:

mydata <- data.frame(x = c(1 ,2, 3), y= c('a', 'b', 'c'))
g <- ggplot(data = mydata) + geom_point(aes(x,y)) 
ggdraw(g + draw_plot(g, x=1, y= 1,width=1,height=1,scale=0.2))

Результат:

График, встроенный в себя в качестве субплана, с масштабированием только ограничительной рамки

1 Ответ

0 голосов
/ 07 ноября 2019

Я не совсем уверен, что вы спрашиваете. Если речь идет о том, как включить и масштабировать (gg) график в пределах a (gg) графика, вот минимальный воспроизводимый пример

gg1 <- ggplot(mtcars, aes(mpg, wt)) +
    geom_point() +
    geom_smooth(method = "lm")
gg2 <- ggplot(mtcars, aes(mpg, hp)) +
    geom_point()

gg1 + annotation_custom(
    ggplotGrob(gg2),
    xmin = 25, xmax = 34, ymin = 3.5, ymax = 5.5)

enter image description here

Размеры участка определяются координатами (xmin, ymin) и (xmax, ymax).


Обновление

В ответ на ваш комментарий, возможно, это то, чтоВы после?

library(grid)
library(png)
fn <- tempfile("plot", fileext = "png")
ggsave(filename = fn, plot = gg2, device = "png")
img <- readPNG(fn)
gg1 + annotation_custom(
    rasterGrob(img, interpolate = T),
    xmin = 25, xmax = 28, ymin = 3.5, ymax = 5)

Идея состоит в том, чтобы сохранить участок во временном файле PNG;затем мы можем использовать png :: readPNG with grid :: rasterGrob` для отображения PNG в качестве пользовательской аннотации на основном графике.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...