13
$\begingroup$

In past versions of Mathematica one could use a terse syntax for FrameTicks:

{bottom, left, top, right}

In 10.1 this syntax is no longer recognized requiring the addition of two sets of brackets:

{{left, right}, {bottom, top}}

However it seems that the flat form is still supported by Frame and FrameStyle.* As a fan of terse code I prefer the flat form and I cannot think of a good reason for its removal from FrameTicks. Is this a bug?

An example rendered in 10.0:

Plot[x, {x, 0, 15},
 Frame -> {True, False, True, True}, 
 FrameTicks -> {All, None, None, None},
 FrameStyle -> {Red, Green, Blue, Magenta}]

enter image description here

And rendered in 10.1:

enter image description here

Note that the top and right frame edges have tick marks despite the None specification; FrameTicks -> {All, None, None, None} is effectively ignored.


* It seemed that in initial experimentation Frame and FrameStyle also did not work. After using PlotTheme->"Classic" as suggested by kguler these were observed to work even without the PlotTheme option. kguler seems to have observed something similar so it's possible this actually happened and I'm not just fooling myself.

$\endgroup$
9
  • $\begingroup$ it seems that frame specs inside PlotTheme is conflicting with the user-provided frame specs: Plot[2 Sin[x] + x, {x, 0, 15}, Frame -> {True, True, False, True}, PlotTheme->"Classic"] works as expected. $\endgroup$
    – kglr
    Commented May 5, 2015 at 8:32
  • $\begingroup$ @kguler Now I am very confused; it seems like the "old" syntax is working again in all cases? Maybe this was a localized problem? :-p $\endgroup$
    – Mr.Wizard
    Commented May 5, 2015 at 8:36
  • $\begingroup$ There is closely related question somewhere. $\endgroup$
    – Kuba
    Commented May 5, 2015 at 8:47
  • 2
    $\begingroup$ Mr. W same here:). First, It didn't work without PlotTheme->"Classic", not it works with or without it. (Version 10.1.0 for Linux x86 (64-bit) (March 24, 2015), on Wolfram Programming Cloud) $\endgroup$
    – kglr
    Commented May 5, 2015 at 8:49
  • 1
    $\begingroup$ somewhat related: even terser Frame -> {Bottom, Top, Right} works in V9, not in V10.1. $\endgroup$
    – kglr
    Commented May 5, 2015 at 8:57

1 Answer 1

14
$\begingroup$

I have no idea if the old syntax was removed for a reason, but normal behaviour can be returned with the following workaround:

Unprotect[Visualization`Utilities`FrameTicksQ];
Visualization`Utilities`FrameTicksQ[{
 _?Visualization`Utilities`OptionsDump`tickListQ,
 _?Visualization`Utilities`OptionsDump`tickListQ,
 _?Visualization`Utilities`OptionsDump`tickListQ,
 _?Visualization`Utilities`OptionsDump`tickListQ
}] := True;

Thanks to Mr. Wizard for suggesting the more robust version.

$\endgroup$
4
  • $\begingroup$ Thank you. Can you comment on the changing behavior I think I observed regarding Frame and FrameStyle? $\endgroup$
    – Mr.Wizard
    Commented May 5, 2015 at 23:06
  • 1
    $\begingroup$ @Mr.Wizard, I don't recall seeing any problem with Frame and FrameStyle using the flat list syntax. $\endgroup$ Commented May 6, 2015 at 18:43
  • $\begingroup$ Since this form is still internally supported after modifying FrameTicksQ and since it seems that Frame and FrameStyle still accept it I am going to presume that this was merely removed by accident during routine maintenance and not intentionally deprecated. $\endgroup$
    – Mr.Wizard
    Commented May 6, 2015 at 22:46
  • 1
    $\begingroup$ In version 8.0.4 there was simpler built-in definition: Visualization`Utilities`FrameTicksQ[{__?Visualization`Utilities`OptionsDump`tickListQ}]:=True. $\endgroup$ Commented Jun 24, 2015 at 7:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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