Скиньте значення до значень за замовчуванням під час запуску


77

Зазвичай, коли я створюю власні функції сюжету, я роблю конструкцію:

op <- par("mypar"=myvalue)
on.exit(par(op))

що є стандартним способом повернення parпопередніх значень. Уявіть, що ви працювали з деякими функціями, які змінили деякі параметри, і вам потрібно повернутися до значень за замовчуванням при запуску в R. Який зручний спосіб це зробити?

Або іншими словами: як досягти значень за замовчуванням для par()?


5
У мене склалося враження, що кожного разу, коли запускається новий графічний пристрій, йому в будь-якому випадку надаються значення за замовчуванням.
Джеймс,

3
@James Вони це роблять, але я думаю, що спрямованістю @Joris Q є, чи є спосіб скинути параметри для поточного пристрою, якщо ніхто не зберег за замовчуванням. Іншими словами, як ми визначаємо парси за замовчуванням для пристрою, а не поточні парси.
Гевін Сімпсон,

7
@Gavin Simpson Ах добре, але dev.new()і dev.off()може бути використаний тоді
Джеймс,

1
@James Справді; Я згадав про це @Joris у чаті R tag, але ми хочемо менш шаленого рішення :-)
Гавін Сімпсон

Відповіді:


90

Кожного разу, коли новий пристрій відкривається, par () буде скидати, тому інший варіант - просто зробити dev.off()і продовжити.


5
Серед усіх наданих відповідей це єдиний, який насправді відповідає на поставлене запитання.
генеровано

6
@DarkHalo не буде dev.off () поганим варіантом, якби ми мали декілька графіків у pdf? тому що це pdf
закрило

51

Це хакі, але:

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

3
Можливо, було б безпечніше уникати спроб скинути елементи, які були б змінені шляхом зміни розміру, таких як mai, mar, pin, plt та pty (як застережено на сторінці довідки.)
IRTFM

2
Подібну ідею обговорювали на R-help: tolstoy.newcastle.edu.au/R/e2/help/07/09/26665.html
Аарон залишив Stack Overflow

Більше нічого не знайшов, тож доведеться це робити.
Джоріс Мейс,

1
Я отримую таке повідомлення про помилку 'Попереджувальне повідомлення: У (функція (): Дозволено лише один графічний пристрій RStudio'
hlm

3
@hlm Жорстке тоді; такий пристрій може бути лише один, і оскільки R не зберігає за замовчуванням, зараз є спосіб, esily, схопити їх. Запитайте про це людей у ​​RStudio. Крім того, не змінюйте, par()не зберігаючи за замовчуванням. Або організуйте, щоб за замовчуванням було зафіксовано налаштування за замовчуванням через ваш .Rprofile.
Гевін Сімпсон,

15

З 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

13
Я знаю це, але воно не відновлює значення за замовчуванням, якщо ви змінили їх раніше. par () відображає поточні налаштування, а не параметри за замовчуванням.
Джоріс Мейс

4
Це рішення може не працювати в цьому випадку, але залишмо його тут як підхід, який не працює.
Ануша,

4

Альтернативне рішення для запобігання функціям, що змінюють користувача par. Ви можете встановити параметри за замовчуванням на початку функції, так що графічні параметри та макет не будуть змінені під час виконання функції. Детальніше ?on.exitдив.

on.exit(layout(1))
opar<-par(no.readonly=TRUE)
on.exit(par(opar),add=TRUE,after=FALSE)

1

Скористайтеся наведеним нижче сценарієм, щоб повернутися до звичайного 1 сюжету:

par(mfrow = c(1,1))

1

dev.off () - найкраща функція, але вона також очищає всі графіки. Якщо ви хочете зберегти графіки у своєму вікні, на початку збережіть параметри за замовчуванням:

def.par = par ()

Тоді, коли ви використовуєте свої функції пар, у вас все ще є резервна копія стандартних параметрів номіналу. Пізніше, після створення ділянок, закінчіть з:

par (def.par) # повернутися до стандартних налаштувань номіналу

Завдяки цьому ви зберігаєте згенеровані графіки та скидаєте параметри.


2
Майте на увазі, що деякі графічні параметри доступні лише для читання, тому їх неможливо скинути. Таким чином, ваш початковий виклик ковдру , щоб parкраще зробити як par(no.readonly = TRUE).
BroVic
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.