#r #default #par
#r #По умолчанию #par
Вопрос:
Обычно, когда я создаю свои собственные функции построения, я создаю конструкцию :
op <- par("mypar"=myvalue)
on.exit(par(op))
это стандартный способ возврата par
к предыдущим значениям. Представьте, что вы запускали некоторые функции, которые изменили некоторые параметры, и вам нужно сбросить значения по умолчанию при запуске в R. Какой удобный способ сделать это?
Или другими словами: как достичь значений по умолчанию для par()
?
Комментарии:
1. У меня создалось впечатление, что каждый раз, когда запускается новое графическое устройство, ему все равно присваиваются значения по умолчанию.
2. @James Они делают, но я думаю, что суть вопроса @Joris в том, есть ли способ сбросить параметры для текущего устройства, если оно не сохранило значения по умолчанию. Другими словами, как нам определить параметры по умолчанию для устройства, а не текущие параметры.
3. @Gavin Simpson Ах, хорошо, но
dev.new()
иdev.off()
можно было бы использовать тогда4. @James Действительно; Я упомянул об этом @Joris в чате R tag, но мы хотим менее хакерское решение 🙂
Ответ №1:
Каждый раз, когда открывается новое устройство, par () сбрасывается, поэтому другой вариант — просто выполнить dev.off()
и продолжить.
Комментарии:
1. Среди всех предоставленных ответов это единственный, который действительно отвечает на заданный вопрос.
2. @DarkHalo не был бы dev.off () плохим вариантом, если бы у нас было несколько графиков в формате pdf? потому что это закроет
Ответ №2:
Это халтурно, но:
resetPar <- function() {
dev.new()
op <- par(no.readonly = TRUE)
dev.off()
op
}
работает в некотором роде, но временно выводит на экран новое устройство…
Например.:
> par(mfrow = c(2,2)) ## some random par change
> par("mfrow")
[1] 2 2
> par(resetPar()) ## reset the pars to defaults
> par("mfrow") ## back to default
[1] 1 1
Комментарии:
1. Возможно, было бы безопаснее избегать попыток сброса элементов, которые были бы изменены путем изменения размера, таких как mai, mar, pin, plt и pty (как указано на странице справки по par).
2. Аналогичная идея обсуждалась в R-help: tolstoy. newcastle.edu.au/R/e2/help/07/09/26665.html
3. Больше ничего не нашел, так что придется это сделать.
4. Я получаю следующее сообщение об ошибке «Предупреждающее сообщение: В (function (): разрешено только одно графическое устройство RStudio»
5. @h.l.m Тогда сложно; может быть только одно такое устройство, и поскольку R не хранит значения по умолчанию, теперь, по-видимому, есть способ их захватить. Спросите об этом людей из RStudio. В качестве альтернативы, не изменяйте
par()
, не сохраняя значения по умолчанию. Или сделайте так, чтобы значения по умолчанию отображались при запуске через ваш.Rprofile
.
Ответ №3:
Из Quick-R
par() # view current settings
opar <- par() # make a copy of current settings
par(col.lab="red") # red x and y labels
hist(mtcars$mpg) # create a plot with these new settings
par(opar) # restore original settings
Комментарии:
1. Я знаю это, но это не восстанавливает значения по умолчанию, если вы изменили их раньше. par() показывает текущие настройки, а не настройки по умолчанию.
2. Возможно, в данном случае это решение не работает, но давайте оставим его здесь как подход, который не работает.
Ответ №4:
Альтернативное решение для предотвращения изменения пользователя функциями par
. Вы можете установить параметры по умолчанию на ранней стадии функции, чтобы графические параметры и макет не были изменены во время выполнения функции. Смотрите ?on.exit
для получения дополнительной информации.
on.exit(layout(1))
opar<-par(no.readonly=TRUE)
on.exit(par(opar),add=TRUE,after=FALSE)
Ответ №5:
dev.off() — лучшая функция, но она также очищает все графики. Если вы хотите сохранить графики в своем окне, вначале сохраните параметры параметра по умолчанию:
def.par = par()
Затем, когда вы используете свои функции par, у вас все еще есть резервная копия настроек par по умолчанию. Позже, после генерации графиков, завершите с:
номинал (определение номинала) #возврат к настройкам номинала по умолчанию
При этом вы сохраняете сгенерированные графики и сбрасываете настройки par.
Комментарии:
1. Имейте в виду, что некоторые графические параметры доступны только для чтения и, следовательно, не могут быть сброшены. Таким образом, ваш первоначальный общий вызов к
par
лучше всего выполнять какpar(no.readonly = TRUE)
.
Ответ №6:
Используйте приведенный ниже скрипт, чтобы вернуться к нормальному графику 1:
par(mfrow = c(1,1))