MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: How to extract the x-axis and y-axis current ticks of a plot from

  • To: mathgroup at smc.vnet.net
  • Subject: [mg108415] Re: How to extract the x-axis and y-axis current ticks of a plot from
  • From: Armand Tamzarian <mike.honeychurch at gmail.com>
  • Date: Wed, 17 Mar 2010 04:38:25 -0500 (EST)
  • References: <hnnk37$che$1@smc.vnet.net>

On Mar 16, 4:47 am, "Nasser M. Abbasi" <n... at 12000.org> wrote:
> Version 7:
>
> Many times I find I need to change the Plot Ticks (mostly to make the ticks
> display in units of Pi for example instead of just in pure real numbers).
>
> The only way I know how to do this now is this:
>
> I build my own Ticks lists, and then do
>
> Plot[...,Ticks->{myXticks,myYTicks},....]
>
> But the problem with this, is tha I have to guess (Actually I do little more
> than guessing) to obtain a good number of ticks to use, else I get too few
> ticks or too many.
>
> But what would be better is to use the Ticks Mathematica uses on the plot
> before I change the ticks myself. The reason is that I would know the most
> optimal number of ticks to use.
>
> So, now What I want to do is this: First plot, but do not display, using
> default Mathematica ticks. Then use AbsoluteOptions to get the ticks
> information, then pull out the x-ticks list and the y-ticks from these,
> modify each tick value to the value I want using my own transformation, then
> set the plot again but now using the changed x and y ticks, then plot and
> display.
>
> But I am stuck after getting the ticks information from the current plot. As
> I am not able to figure how to pull out the x-ticks and y-ticks out of it. I
> do not know how these are encoded in there.   Here is what I do
>
> p = Plot[Sin[x], {x, 0, 10}, Ticks -> Automatic]
> t = Ticks /. AbsoluteOptions[p]
>
> You can see from the plot, that x-ticks are {2,4,6,8,10}  and y-ticks are
> {-1.0,0,.5,1}
>
> But I do not know how to pull these 2 lists out of the "t" variable above. I
> just need the list of numbers (do not care about the other attributes such
> as Thickness and GrayLevel and all that.)
>
> Dimensions[t]
> {2}
>
> Dimensions[t[[1]]]
> {21, 4}
>
> Dimensions[t[[2]]]
> {41, 4}
>
> Are these things documented somewhere? Looking at FullForm[t] was not much
> help.
>
> thanks,
> --Nasser

This will change tick lengths

newTicksLengths[image_Graphics, majorLength_Real,
minorLength_Real] :=Module[{ticks},
  ticks = AbsoluteOptions[image, Ticks];
  ticks = ticks /. {a_?NumericQ, b_, {x_, 0.}, c : {_GrayLevel,
_AbsoluteThickness}} :> {a,  b, {Which[x == 0.00625, majorLength, x ==
=
0.00375, minorLength], 0.}, c};
  Show[image, ticks]
  ]

newTicks[p, 0.05, 0.025]

Although this was something I already had for changing tick lengths,
you should be able to modify it to change tick labels or other tick
parameters.

Mike


  • Prev by Date: Re: How to extract the x-axis and y-axis current ticks of a plot from AbsoluteOptions?
  • Next by Date: Re: Video compression
  • Previous by thread: Re: How to extract the x-axis and y-axis current ticks of a plot
  • Next by thread: How to set $UserBaseDirectory in the Workbench?