Как редактировать предыдущий график в графическом устройстве R, разделенном по mfrow - PullRequest
1 голос
/ 27 мая 2019

У меня есть существующая функция печати (возможно, написанная кем-то другим), которая использует mfrow для нанесения нескольких рисунков на одном графическом устройстве.Я хочу отредактировать фигуры, которые уже были нанесены (например, возможно, добавить опорную линию на фигуру 1)

par(mfrow = c(1, 2))
plot(1:10)
hist(1:10)
# Oh no!  I want to add abline(a = 0, b = 1) to the first plot!

Предположим, этот код вложен в другую функцию построения PlotABunchOfStuff(1:10), которую я не могу изменить.

Я не хочу изменять PlotABunchOfStuff, потому что это принадлежит кому-то другому, или я просто отлаживаю и не буду нуждаться в дополнительных деталях после обнаружения ошибки.

1 Ответ

0 голосов
/ 28 мая 2019

Если вы готовы использовать ggplot Я думаю, вы можете найти то, что вы хотите, в коде ниже:

df <- data.frame(x = 1:10, y = 1:10)
g1 <- ggplot(df, aes(x = x, y = y)) +
  geom_point()
g2 <- ggplot(df, aes(x = x, y = y)) +
  geom_line()

grid.arrange(g1, g2)

g1 <- g1 + geom_smooth(method='lm',formula=y~x)  # it could be anything else !

grid.arrange(g1, g2)

Редактировать 1: другое решение:

Создать графическийобъект в окнах, который будет уничтожен после dev.off (), если filename = "":

win.metafile(filename = "")

По умолчанию inhibit не разрешает запись графика, поэтому мы используем enable:

dev.control('enable')
plot(1:10)
p <- recordPlot() 
dev.off()
replayPlot(p)

Мои вдохновения на Stackoverflow:

График R без отображения графического окна Сохранение графика в объекте

Мои вдохновения на R:

https://www.rdocumentation.org/packages/grDevices/versions/3.6.0/topics/dev https://www.rdocumentation.org/packages/grDevices/versions/3.6.0/topics/recordPlot

Надеюсь, это поможет вам!Удачи.

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