I found several topics about undocumented ScaledTicks function and tried to use this. Here is the first example:

g1 = Plot[Sin[3 x] Exp[-x], {x, 0, 10}, PlotRange -> All];
g2 = Plot[Sin[3 x] Exp[1.1 x], {x, 0, 10}, PlotRange -> All];
{pr1, pr2} = (PlotRange[#][[2]] & /@ {g1, g2});
Show[{g1, g2 /. Line[x_] :> 
 Line[({#[[1]], Rescale[#[[2]], pr2, pr1]} &) /@ x]}, 
 Axes -> False, Frame -> True, 
 FrameTicks -> {{Charting`ScaledTicks["Linear"], 
   Charting`ScaledTicks[{Rescale[#, pr2, pr1] &, Rescale[#, pr1, pr2] &}]},
   {Charting`ScaledTicks["Linear"], Automatic}}]

This gives a mess of second y-axis ticks:

enter image description here

But if we use "full" form of ScaledTicks:

Charting`ScaledTicks["Linear", {Rescale[#, pr2, pr1] &, Rescale[#, pr1, pr2] &}, "Nice"]

we see very nice picture:

enter image description here

So, the first question: should we always use "full" form of ScaledTicks even if there is no transformation of coordinates?

The second example is about LogPlot and similar functions.

Show[{LogPlot[x, {x, 1, 100}], Plot[x Log[100]/100, {x, 1, 100}]}, 
Axes -> False, Frame -> True, 
FrameTicks -> {{Charting`ScaledTicks["Log"], 
Charting`ScaledTicks["Linear", {#/100 Log[100] &, # 100/Log[100] &}, 
"Nice"]}, {Automatic, Automatic}}]

and the result:

enter image description here

Here for this simple case I make all rescaling "by hand". If we change ScaledTicks to its "short" form

Charting`ScaledTicks[{#/100 Log[100] &, # 100/Log[100] &}]

the picture will be the same. So, in this example "short" and "full" forms of ScaledTicks are equivalent. How can we explain the difference between examples?

And the final observation. Any change from the simplest form ScaledTicks["Log"] gives errors, i.e. we can't write even ScaledTicks["Log",{#&, #&},"Nice"].

  • 2
    $\begingroup$ Would be good to see this answered by those who are familiar. Posting to bump this. $\endgroup$ Apr 5, 2020 at 5:00
  • $\begingroup$ @kglr do you have a good answer for this? I just found how to use the TicksLength option to set the major and minor tick lengths using some syntax from an answer you updated recently using this function. $\endgroup$ Apr 18, 2020 at 22:47


Your Answer

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

Browse other questions tagged or ask your own question.