R Умножает график на одну переменную - PullRequest
1 голос
/ 18 января 2020

Привет, у меня есть следующий код:

par(mfrow=c(1,3))
plot(BCxyz[,1], BCxyz[,2], main="Bray-Curtis 1:2", pch=20, cex = 3, col=c("blue", "green", "red", "yellow")[Metadata$SampleType])
plot(BCxyz[,1], BCxyz[,3], main="Bray-Curtis 1:3", pch=20, cex = 3, col=c("blue", "green", "red", "yellow")[Metadata$SampleType])
plot(BCxyz[,2], BCxyz[,3], main="Bray-Curtis 2:3", pch=20, cex = 3, col=c("blue", "green", "red", "yellow")[Metadata$SampleType])

, таким образом, я получаю фигуру с 3 графиками, поэтому я просто хочу добавить фигуру (с 3 графиками в ней) в одну переменную, что-то вроде:

figure1 <- (mfrow=c(1,3)........)

и каждый раз, когда я называю figure1, открываю 3 сюжета в одной фигуре !!!!

Спасибо

1 Ответ

2 голосов
/ 18 января 2020

Вы можете использовать recordPlot, чтобы сохранить текущий график и вызвать его позже.

par(mfrow=c(1,3))
plot(1) ; plot(2); plot(3)
figure1 <- recordPlot()
# view then close the plot window, just to prove that redrawing it works

figure1             # redraws it when interactive on the console
replayPlot(figure1) # same thing
print(figure1)      # indirect, calls replayPlot

Последние две команды имеют одинаковый результат на консоли, но если вы собираетесь «воспроизвести» построить программно (например, в {...} кодовых блоках или функциях), вы должны использовать функцию replayPlot напрямую. Причина, по которой figure1 работает сама по себе на консоли (без print или replayPlot), заключается в том, что figure1 относится к классу "recordedplot", а метод base-R grDevices:::print.recordedplot S3 напрямую вызывает replayPlot.

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