Сбросить графические параметры обратно к значениям по умолчанию без использования dev.off()

Такие как поля, ориентация и тому подобное...

dev.off() у меня не работает. Я часто использую RStudio со встроенным графическим устройством. Затем у меня есть функции построения графика, которые я хочу построить либо на графическом устройстве RStudio по умолчанию, либо, если я вызывал X11(), раньше в новом окне.

Это поведение не работает с dev.off(). Если моя функция построения графика всегда вызывает dev.off(), она может непреднамеренно закрыть окно X11() и вместо этого вывести на экран устройство RStudio. Если бы я всегда вызывал dev.off(), а затем X11(), он всегда отображался бы в новом окне, даже если бы я хотел построить график в устройстве RStudio.

Обычно это можно решить с помощью getOption("device"), однако всегда возвращается RStudioGD.


person Cookie    schedule 15.02.2012    source источник


Ответы (6)


См. ? пар. Идея состоит в том, что вы сохраняете их такими, какими они были, когда вы их нашли, а затем восстанавливаете:

old.par <- par(mar = c(0, 0, 0, 0))
## do plotting stuff with new settings

Теперь восстановите то, что было до того, как мы изменили mar:

par(old.par)
person mdsumner    schedule 15.02.2012
comment
.pardefault <- par() при запуске с par(.pardefault) помогает, спасибо - person Cookie; 15.02.2012
comment
@cookie, твой метод работает для меня. Принятый метод наверное сработал в свое время, но с rstudio 1.0.153 только ваш метод сбрасывает все изменения, поля, цвета и т.д. т.е. old.par ‹- par(no.readonly=T), а затем par(old.par) - person netskink; 27.08.2017

В RStudio вы можете просто перейти к «Графикам» и выбрать «Удалить графики».

person rinzy kutex    schedule 17.09.2013
comment
Это просто удаляет текущий график, возвращается к последнему построенному изображению, но не удаляет графические параметры. Я что-то упустил? - person Mohit Verma; 16.06.2014
comment
Переход к графикам и «Очистить все», если вы находитесь в RStudio - person Blou91; 05.11.2014
comment
очистить все Сбрасывает графические параметры на значения по умолчанию - person Hugo Koopmans; 04.11.2015
comment
@MohitVerma Сбрасывает графические параметры, если только вы не установите свои собственные параметры снова непосредственно перед запуском графика. - person remykarem; 17.10.2017

Если вы уже пропустили сохранение параметров по умолчанию при запуске и не хотите перезапускать сеанс, вы можете открыть терминал и запустить R, набрав (обычно) R.

Затем введите:

пар()

Он напечатает все значения по умолчанию.

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

person Umut Eser    schedule 19.06.2014
comment
Умный совет. Я всегда путаю свои настройки по умолчанию, запуская графические скрипты, которые выдают ошибку, прежде чем я могу сбросить параметры. Полные команды: в новом сеансе par.defaults <- par(no.readonly=TRUE); save(par.defaults, file="R.default.par.RData") , затем в вашем основном сеансе (при условии того же рабочего каталога): load("R.default.par.RData"); par(par.defaults). - person AmeliaBR; 23.09.2014
comment
Вместо этого сделайте dput(par(no.readonly=TRUE)). Это избавит вас от необходимости копировать все заново. - person Bastien; 09.03.2017

простая функция, содержащая все значения по умолчанию, может выполнить эту работу:

  reset_par <- function(){
    op <- structure(list(xlog = FALSE, ylog = FALSE, adj = 0.5, ann = TRUE,
                         ask = FALSE, bg = "transparent", bty = "o", cex = 1, 
                         cex.axis = 1, cex.lab = 1, cex.main = 1.2, cex.sub = 1, 
                         col = "black", col.axis = "black", col.lab = "black", 
                         col.main = "black", col.sub = "black", crt = 0, err = 0L, 
                         family = "", fg = "black", fig = c(0, 1, 0, 1), 
                         fin = c(6.99999895833333, 6.99999895833333), font = 1L, 
                         font.axis = 1L, font.lab = 1L, font.main = 2L, 
                         font.sub = 1L, lab = c(5L, 5L, 7L), las = 0L, 
                         lend = "round", lheight = 1, ljoin = "round", lmitre = 10, 
                         lty = "solid", lwd = 1, mai = c(1.02, 0.82, 0.82, 0.42), 
                         mar = c(5.1, 4.1, 4.1, 2.1), mex = 1, mfcol = c(1L, 1L), 
                         mfg = c(1L, 1L, 1L,1L), mfrow = c(1L, 1L), 
                         mgp = c(3, 1, 0), mkh = 0.001, new = FALSE, 
                         oma = c(0, 0, 0, 0), omd = c(0, 1, 0, 1), 
                         omi = c(0, 0, 0,0), pch = 1L, 
                         pin = c(5.75999895833333, 5.15999895833333),
                         plt = c(0.117142874574832, 0.939999991071427, 
                                 0.145714307397962, 0.882857125425167), 
                         ps = 12L, pty = "m", smo = 1, srt = 0, tck = NA_real_, 
                         tcl = -0.5, usr = c(0.568, 1.432, 0.568, 1.432), 
                         xaxp = c(0.6, 1.4, 4), xaxs = "r", xaxt = "s", 
                         xpd = FALSE, yaxp = c(0.6, 1.4, 4), yaxs = "r", 
                         yaxt = "s", ylbias = 0.2), 
                         .Names = c("xlog", "ylog", "adj", "ann", "ask", "bg", 
                         "bty", "cex", "cex.axis", "cex.lab", "cex.main", "cex.sub", 
                         "col", "col.axis", "col.lab", "col.main", "col.sub", "crt", 
                         "err", "family", "fg", "fig", "fin", "font", "font.axis", 
                         "font.lab", "font.main", "font.sub", "lab", "las", "lend", 
                         "lheight", "ljoin", "lmitre", "lty", "lwd", "mai", "mar", 
                         "mex", "mfcol", "mfg", "mfrow", "mgp", "mkh", "new", "oma",
                         "omd", "omi", "pch", "pin", "plt", "ps", "pty", "smo", 
                         "srt", "tck", "tcl", "usr", "xaxp", "xaxs", "xaxt", "xpd", 
                         "yaxp", "yaxs", "yaxt", "ylbias"))
  par(op)
  }

назовите это, используя:

reset_par()

person Farid Cheraghi    schedule 22.05.2017

Для полей ?par предоставляет значение по умолчанию c(5,4,4,2)+0,1. Следующее должно сбросить поля до значений по умолчанию.

par(mar=c(5,4,4,2)+0.1)
person Saugata Cahtterjee    schedule 24.04.2019
comment
И вы также можете открыть сеанс R и ввести par("mar"), чтобы увидеть это значение по умолчанию. - person Joe; 10.03.2020

Канонический ответ был только в комментарии (от Cookie), и его можно было легко пропустить:

Получить текущие параметры/параметры по умолчанию

old.par <- par(no.readonly = TRUE)

Установите их в свой код, например.

par(mai=c(0,0,0,0))

И тогда вы можете сбросить паритеты с помощью

par(old.par)

Или в функции

on.exit(par(old.par))
person Robert Hijmans    schedule 04.04.2019