Сброс номинала до значений по умолчанию при запуске

#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? потому что это закроет pdf устройство и, следовательно, не сможет содержать несколько графиков в одном 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))