Re: precision of y-axis values in plot
- To: mathgroup at smc.vnet.net
- Subject: [mg123808] Re: precision of y-axis values in plot
- From: Heike Gramberg <heike.gramberg at gmail.com>
- Date: Tue, 20 Dec 2011 03:04:21 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <jccgik$min$1@smc.vnet.net> <jcf8kl$70m$1@smc.vnet.net> <201112191222.HAA14592@smc.vnet.net>
The values for min and max values used in Ticks->func are the min and max values of the total plot range of the plot which is a combination of PlotRange and PlotRangePadding. Consider for example tickFunction[min_, max_] := (Table[i, {i, min, max, (max - min)/7}]) Plot[Sin[x], {x, 0, 1}, PlotRange -> Automatic, PlotRangePadding -> 0.1, Ticks -> tickFunction] Then the ticks along the x-axis run from -.1 to 1.1 which is the plot range in the x-direction plus a padding of .1 on both sides. If an explicit PlotRange is given then PlotRangePadding is ignored and min and max values are taken directly from PlotRange. Consider for example Plot[Sin[x], {x, 0, 1}, PlotRange -> {{-.2, 1.3}, {-.2, 1}}, Ticks -> tickFunction] Calculating the total plot range in the original case is slightly more complicated since the default value for PlotRangePadding is Scaled[0.02], which means that 2 percent of the total plot range in the final plot is padding, and the rest is the plot range which you would find with AbsoluteOptions[Plot[Sin[x], {x, 0, 1}], PlotRange] which is equal to {PlotRange -> {{0., 1.}, {0., 0.841471}}} in this case. This means that the total plot range in the horizontal direction is 1./(1-2*.02)==1.04167. The amount of padding on the left and right-hand side is then .02*1.04167==0.0208334. Therefore, with tickFunction[min_, max_] := (Table[i, {i, min, max, (max - min)/7}]) we would expect tick marks along the horizontal axis at tickFunction[-.0208334, 1.0208334]== {-0.0208334, 0.127976, 0.276786, 0.425595, 0.574405, 0.723214, 0.872024, 1.02083} which is exactly what we get with Plot[Sin[x], {x, 0, 1}, Ticks->tickFunction] By the way the tick marks you found on the last line are the tick marks along the y-axis. Apparently they were calculated after the tick marks along the x-axis were calculated which overwrote limits in your tickFunction. Heike. On 19 Dec 2011, at 13:22, DrMajorBob wrote: > The behavior of Ticks -> func is not explained in Help for Ticks -- and no > examples are given -- so I suppose any guess is as good as another. It's > pretty clear that Table[{i, NumberForm[i, {3, 4}]}, {i, min, max, 1/7}] > should yield tick marks separated by about > > 1/7. > > 0.142857 > > The question is what "min" and "max" arguments are used. > > When I run this code: > > tickFunction[min_, max_] := Table[{i, NumberForm[i, {3, 4}]}, {i, min, > max, 1/7}] > > Plot[Sin[x], {x, 0, 1}, Ticks -> tickFunction] > > The ticks I see are {0.1220, 0.2650, 0.4081, 0.5510, .6930, .8360, > 0.9790}, which are spaced just about right: > > differences = > Subtract @@@ > Partition[ > ticks = {0.1220, 0.2650, 0.4081, 0.5510, .6930, .8360, 0.9790}, 2, > 1] > -7 Rationalize@Mean@% > > {-0.143, -0.1431, -0.1429, -0.142, -0.143, -0.143} > > 5999/6000 > > xmin = 0.1220 should be the first tick mark, and xmax could be 1.12186: > > Through[{First, Last}@ticks] + {0, 1}/7 > (tickFunction @@ %)[[All, 1]] > > {0.122, 1.12186} > > {0.122, 0.264857, 0.407714, 0.550571, 0.693429, 0.836286, 0.979143} > > but those are not the plotted tick marks. (Close, but no cigar.) > > If we modify tickFunction to get the arguments directly, a very different > result arises: > > tickFunction[min_, max_] := (limits = {min, max}; > Table[{i, NumberForm[i, {3, 4}]}, {i, min, max, 1/7}]) > Plot[Sin[x], {x, 0, 1}, Ticks -> tickFunction]; > limits > (tickFunction @@ limits)[[All, 1]] > > {-0.0175306, 0.859002} > > {-0.0175306, 0.125326, 0.268184, 0.411041, 0.553898, 0.696755, \ > 0.839612} > > Those are really, REALLY not the tick marks on the plot. > > Don't you just love the documentation? > > Bobby > > On Sun, 18 Dec 2011 03:36:44 -0600, Armand Tamzarian > <mike.honeychurch at gmail.com> wrote: > >> On Dec 17, 6:44 pm, Nathan <nhroll... at gmail.com> wrote: >>> On Dec 16, 4:04 am, Armand Tamzarian <mike.honeychu... at gmail.com> >>> wrote: >>> >>> >>> >>> >>> >>> >>> >>> >>> >>>> On Dec 15, 9:01 pm, Nathan <nhroll... at gmail.com> wrote: >>> >>>>> Hi, >>> >>>>> I'm relatively new to Mathematica. I'm having a problem with the >>>>> precision of the y-axis values of some of my plots. All of the data >>>>> labels show up as "2422.3", which isn't very informative since >>> they're >>>>> all the same. I need the plot to show two more decimal point values >>>>> (ex: "2422.305"). I've looked high and low and can't find any way >>> to >>>>> do this. Any ideals? Thanks! >>> >>>>> Nathan. >>> >>>> What you need to do is make a tick function and wrap NumberForm around >>>> your labels and set the number of decimal points that you want. If you >>>> do a search on here for tick functions and NumberForm you should find >>>> many examples. >>> >>>> Mike >>> >>> Mike, >>> >>> Thank you for your help. Forgive my ignorance, but what should I put >>> in the NumberForm function? Here's the plot command I'm using: >>> >>> plot2T := Plot[LT2[T, \[Lambda]], {T, min2, max2}, Frame -> True, >>> FrameLabel -> {{"Task Execution Time (s)", ""}, {"Optimal CSCP >>> Checkpoint Interval (s)", ""}}, FrameStyle -> {{Black, White}, >>> {Black, White}}, Axes -> {False, False}] >>> >>> Based on what you said, I assume I should add something like the >>> following to the Plot function: >>> Tick -> NumberForm[ N[?], 8] >>> >>> However, I'm not sure what should replace the ?. Will you please >>> indulge a newbie with a specific example? Thanks! >> >> >> tickFunction[min_, max_] := Table[{i, NumberForm[i, {3, 4}]}, {i, min, >> max, 1/7}] >> >> Plot[Sin[x], {x, 0, 1}, Ticks -> tickFunction] >> >> You will need to read the documentation on Ticks and NumberForm to get >> this to do exactly what you want. >> >> Mike >> > > > -- > DrMajorBob at yahoo.com >
- References:
- Re: precision of y-axis values in plot
- From: DrMajorBob <btreat1@austin.rr.com>
- Re: precision of y-axis values in plot