1
$\begingroup$

I want to define a function like

AxisScaling[Plot] = {Identity, Identity};
AxisScaling[LogPlot] = {Log, Identity};
AxisScaling[LogLogPlot] = {Log, Log};
AxisScaling[ListPlot] = {Identity, Identity};
AxisScaling[ListLogPlot] = {Log, Identity};
AxisScaling[ListLogLogPlot] = {Log, Log};

except more programmatic. Looking at the manual suggests that I might want to somehow determine the default value for ScalingFunctions for each of these, and looking at G @@ ListPlot[{1}] vs G @@ ListLogPlot[{1}] vs G @@ ListLogLogPlot[{1}] suggests that I might want to look for Charting`ScaledTicks in Ticks, or perhaps at Method->CoordinatesToolOptions->DisplayFunction (or perhaps CopiedValueFunction?). What's the right way to extract this information? (The ultimate reason I want this information is for How to get Callout and Text[...,Offset[...]] to use the same coordinate system in Mathematica 12?, to transform the coordinates from the Text in a plot output into coordinates I can input into Callout, so if it helps AxisScaling can take in the output of the plot function instead of the function itself.

$\endgroup$
2
  • 1
    $\begingroup$ I need to understand your objective. Are you trying to find out what scaling has been applied to a plot or just what the function name was that made the plot? The function name tells you the form of the axis used in a plot. $\endgroup$
    – Hugh
    Jan 7, 2021 at 12:01
  • $\begingroup$ I'm trying to find out what function to apply to the coordinates used in Text inside a Graphics object so that I can pass them to Callout inside the plot-function that generated the Graphics object and have them show in the correct place. I eventually went for ("CopiedValueFunction"/.("CoordinatesToolOptions"/.(Method/.Options[G]))) for G the graphics object, but I'm open to better solutions if there are more correct ways to do this. $\endgroup$ Jan 10, 2021 at 2:37

1 Answer 1

1
$\begingroup$

I found that defining

AxisScaling[G_]:=("CopiedValueFunction"/.("CoordinatesToolOptions"/.(Method/.Options[G])))

works pretty well when I pass the output plot as the argument to AxisScaling.

$\endgroup$

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.