Re: precision of y-axis values in plot
- To: mathgroup at smc.vnet.net
- Subject: [mg123804] Re: precision of y-axis values in plot
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Tue, 20 Dec 2011 03:02:57 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <jccgik$min$1@smc.vnet.net> <jcf8kl$70m$1@smc.vnet.net>
- Reply-to: drmajorbob at yahoo.com
Your printed limits -- {-0.0208333,1.02083} -- don't match those I retrieved from a similar function -- {-0.0175306, 0.859002} -- but otherwise... Thanks. Maybe automatic padding was different here because of my screen resolution, notebook magnification, time zone, moon phase, or what I was wearing. Bobby On Sun, 18 Dec 2011 15:16:14 -0600, Mike H <mike.honeychurch at gmail.com> wrote: > Okay here is what is happening. > > Firstly your limits variable is capturing the y axis range. > > If we change the tick function to this: > > tickFunction[min_, max_] := (Print[{min, max}]; > Table[{i, NumberForm[i, {3, 4}]}, {i, min, max, 1/7}]) > > Plot[Sin[x], {x, 0, 1}, Ticks -> {tickFunction, tickFunction}] > > We get both ranges printed. > > {-0.0208333,1.02083} > {-0.0175306,0.859002} > > Now you might ask why, when you are plotting from 0 to 1 why we are > getting > {-0.0208333,1.02083} parsed to the tick function. The answer is because > it > turns that the plot range used in the tick function includes the plot > range > padding. When you set > > Plot[Sin[x], {x, 0, 1}, Ticks -> {tickFunction, tickFunction}, > PlotRangePadding -> 0] > > {0.,1.} > {0.,0.841471} > > and the ticks are exactly where you expect them. I didn't notice this > when > I wrote the answer yesterday. As for the documentation, I haven't looked > at > tick funcitons in years but I am sure I remember it being there in the > old > (V4, V5)documentation. > > Mike > > > On Mon, Dec 19, 2011 at 5:59 AM, DrMajorBob <btreat1 at austin.rr.com> > 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 >> -- DrMajorBob at yahoo.com