Say I had some good reason to use, for example

SetOptions[Plot,ImageSize->500, LabelStyle->OutrageousPink];

But now sometime has passed, life has changed, and I changed my mind. I don't remember which options I have set for plot, let alone what their default values were. Is there a way to "undo" this?

PS: I know that I can save in advance all the options with plotOptions=Options[Plot], but this requires thinking ahead, which I'm obviously trying to avoid...


I saw this somewhere else on here, but I cannot remember where. The simplest method is to use a fresh kernel:

SetOptions[Plot, Axes -> False];
ParallelEvaluate[Options[Plot, Axes]]
(* {{Axes -> True}} *)

then you dispose of the kernel

(* {KernelObject[1, "local", "<defunct>"]} *)
  • $\begingroup$ Something like this was used here, although that was about Attributes, and not Options... (+1) $\endgroup$
    – Jens
    Dec 2 '14 at 4:07
  • $\begingroup$ @Jens yes, that is exactly where I remember seeing it. $\endgroup$
    – rcollyer
    Dec 2 '14 at 4:36
  • $\begingroup$ @rcollyer Probably instead of AbortKernels[] you meant CloseKernels[]... $\endgroup$ Jul 2 '15 at 22:21
  • $\begingroup$ @AlexeyPopkov why yes I did. :) $\endgroup$
    – rcollyer
    Jul 3 '15 at 12:44

Another option is to use LocalSubmit. Here's a function to do this:

originalOptions[sym_, option_] := Module[{res},
    TaskWait @ LocalSubmit[
        Options[sym, option], 
        HandlerFunctions -> <|"TaskFinished" -> ((res = #["EvaluationResult"])&)|>


SetOptions[Plot, Axes->False];
originalOptions[Plot, Axes]

{Axes -> True}

  • $\begingroup$ which, of course, is a self-contained method of sending it to a parallel kernel. :) $\endgroup$
    – rcollyer
    Jun 15 '19 at 23:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.