Постройте несколько графиков, которые НЕ были созданы с помощью ggplot в строке / сетке - PullRequest
2 голосов
/ 21 июня 2020

Я создаю 2 графика, p1 и p10, и записываю их следующим образом:

plot(data$Fwd_EY, data$SPNom1YrFwdRet, pch = 16, cex = 1.0, col = "blue")
p1 <- recordPlot()
dev.off()

plot(data$Fwd_EY, data$SPNom10YrFwdRet, pch = 16, cex = 1.0, col = "blue")
p10 <- recordPlot()
dev.off()

Я распечатываю P1 и P10 в файлы .png, а затем хотел бы просмотреть оба графика рядом перед их печатью в один файл .png. Я безуспешно пробовал следующие варианты:

myPlots = c(p1, p10)
ggarrange(plotlist = myPlots, nrow = 1)

par(mfrow=c(1,2))
p1
p10

nf <- layout( matrix(c(1,2), ncol=1) )
p1
p10

В некоторых случаях R, кажется, требует, чтобы графики были ggplots. В других случаях графики просто распечатываются в полноэкранном режиме. Как я могу достичь своей цели?

Заранее спасибо

Thomas Philips

Ответы [ 2 ]

1 голос
/ 21 июня 2020

Хитрость состоит в том, чтобы поместить графики в list.

myPlots = list(p1, p10)
ggpubr::ggarrange(plotlist = myPlots, nrow = 1)

Предупреждающие сообщения: 1: Пакет gridGraphics необходим для обработки графиков base-R. Подставляем пустой участок. 2: Пакет gridGraphics необходим для обработки графиков base-R. Подстановка пустого участка.

library(gridGraphics)
#Loading required package: grid

myPlots = list(p1, p10)
ggpubr::ggarrange(plotlist = myPlots, nrow = 1)

введите описание изображения здесь

Данные

plot(1:10, pch = 16, cex = 1.0, col = "blue")
p1 <- recordPlot()
dev.off()

plot(10:1, pch = 16, cex = 1.0, col = "red")
p10 <- recordPlot()
dev.off()
0 голосов
/ 21 июня 2020

Попытка предвосхитить ответ OP на мой второй комментарий выше ...

Вот решение, которое начинается с необработанных данных и накладывается на наиболее подходящую линейную регрессию на диаграмме рассеяния.

d <- tibble(
       X=runif(40, 0, 100),
       Y=-5 + 0.3 * X + rnorm(40)
     )

d %>% ggplot(aes(x=X, y=Y)) + 
        geom_point() +
        stat_smooth(method = "lm")

введите описание изображения здесь

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