MathGroup Archive 2011

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

Search the Archive

Re: precision of y-axis values in plot

  • To: mathgroup at smc.vnet.net
  • Subject: [mg123806] Re: precision of y-axis values in plot
  • From: DrMajorBob <btreat1 at austin.rr.com>
  • Date: Tue, 20 Dec 2011 03:03:39 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <jccgik$min$1@smc.vnet.net> <201112191217.HAA14442@smc.vnet.net>
  • Reply-to: drmajorbob at yahoo.com

Oops, I missed the part about "limits" capturing the y range.

Bobby

On Mon, 19 Dec 2011 06:17:18 -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



  • Prev by Date: Re: precision of y-axis values in plot
  • Next by Date: Re: precision of y-axis values in plot
  • Previous by thread: Re: precision of y-axis values in plot
  • Next by thread: Re: precision of y-axis values in plot