MathGroup Archive 2011

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

Search the Archive

Re: Precicely defining plot size

  • To: mathgroup at smc.vnet.net
  • Subject: [mg123561] Re: Precicely defining plot size
  • From: DrMajorBob <btreat1 at austin.rr.com>
  • Date: Sun, 11 Dec 2011 03:47:34 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <jbspm1$3r9$1@smc.vnet.net> <201112101227.HAA19263@smc.vnet.net>
  • Reply-to: drmajorbob at yahoo.com

With AspectRatio -> aspectratio added, the results make sense.

Bobby

On Sat, 10 Dec 2011 14:50:00 -0600, Mike H <mike.honeychurch at gmail.com>  
wrote:

> Bobby,
>
> This has been my default plotting construct for ages and ages. It works
> fine. The way I read the question was the guy wanted an exact frame size  
> of
> 144 for the plot Frame. All your variations of my example deliver that
> ...for the x axis at least.
>
> My example used the default aspect ratio. If you alter that in the
> preliminary calculations then for aesthetics you should also alter than  
> in
> the Plot options, and in fact I meant to add that anyway:
>
> (*padding*){{l, r}, {b, t}} = {{30, 30}, {30, 30}};
>
> (*amount this adds to the size*)
> {w, h} = Total /@ {{l, r}, {b, t}};
>
> (*aspect ratio*)
> aspectratio = 1./GoldenRatio;
>
> (*frame size*)
> framesize = {144, 144*aspectratio}
>
> Plot[Sin[x], {x, 0, 10}, AspectRatio -> aspectratio, Frame -> True,
>  ImageSize -> framesize + {w, h}, ImagePadding -> {{l, r}, {b, t}}]
>
> If the user wants a frame that is 144 in each direction then set
> aspectratio=1.
>
>
> Mike
>
>
> On Sun, Dec 11, 2011 at 6:25 AM, DrMajorBob <btreat1 at austin.rr.com>  
> wrote:
>
>> Armand,
>>
>> I don't think that's quite doing what you think. Compare these plots to
>> see why:
>>
>> {{l, r}, {b, t}} = {{30, 30}, {30, 30}};
>> {w, h} = Total /@ {{l, r}, {b, t}};
>> aspectRatio = 1/GoldenRatio;
>> framesize = 144 {1, aspectRatio};
>> Plot[Sin[x], {x, 0, 10}, Frame -> True,
>>  ImageSize -> framesize + {w, h}, ImagePadding -> {{l, r}, {b, t}}]
>>
>> aspectRatio = .5/GoldenRatio;
>> framesize = 144 {1, aspectRatio};
>> Plot[Sin[x], {x, 0, 10}, Frame -> True,
>>  ImageSize -> framesize + {w, h}, ImagePadding -> {{l, r}, {b, t}}]
>>
>> aspectRatio = 3/GoldenRatio;
>> framesize = 144 {1, aspectRatio};
>> Plot[Sin[x], {x, 0, 10}, Frame -> True,
>>  ImageSize -> framesize + {w, h}, ImagePadding -> {{l, r}, {b, t}}]
>>
>> Bobby
>>
>> On Sat, 10 Dec 2011 06:27:59 -0600, Armand Tamzarian <
>> mike.honeychurch at gmail.com> wrote:
>>
>>  On Dec 9, 9:59 pm, premiumxy <s... at stefanabel.com> wrote:
>>>
>>>> Hello,
>>>>
>>>> I have layout problem, and I just cannot get it solved even after  
>>>> trying
>>>> for a long time now...
>>>>
>>>> To make it simple: I want to create a plot with frame->true (that I
>>>> after wards export to a *.eps file) with a precise frame size, let's  
>>>> say
>>>> 2inch.
>>>>
>>>> Plot[Sin[x],{x,0,10},**ImageSize->144]
>>>>
>>>> How do you have access to the frame size within a plot?! I know that  
>>>> by
>>>> I mageSize->144 the whole image will be 2inch large. But this  
>>>> includes the
>>>> ticks and the frame-labels. I can make paddings, or reduce the  
>>>> plotRegion,
>>>> but always including the labels...
>>>>
>>>> It sounds like an easy problem. Has anybody an idea?
>>>>
>>>> Thanks a lot!
>>>>
>>>
>>> With an ImageSize of 144 the frame will only be 144 if ImagePadding is
>>> zero. So what you need to do is explicitly set some image padding and
>>> add that to the "frame size" to get your final image size:
>>>
>>> (* padding *)
>>> {{l, r}, {b, t}} = {{30, 30}, {30, 30}};
>>>
>>> (* amount this adds to the size *)
>>> {w, h} = Total /@ {{l, r}, {b, t}};
>>>
>>> (* aspect ratio *)
>>> aspectratio = 1./GoldenRatio;
>>>
>>> (* frame size *)
>>> framesize = {144, 144*aspectratio}
>>>
>>> Plot[Sin[x], {x, 0, 10},
>>>  Frame -> True,
>>>  ImageSize -> framesize + {w, h},
>>>  ImagePadding -> {{l, r}, {b, t}}]
>>>
>>> This is also important in dynamic plots when you are resizing -- it
>>> allows you to keep everything a fixed size or alternatively you can
>>> resize will scale everything correctly.
>>>
>>> Mike
>>> http://ibnhconsulting.**blogspot.com/<http://ibnhconsulting.blogspot.com/>
>>>
>>>
>>
>> --
>> DrMajorBob at yahoo.com
>>


-- 
DrMajorBob at yahoo.com



  • Prev by Date: Re: NMinimize problem: fct minimized uses FindRoot
  • Next by Date: Re: Findminimum too slow for iterative reweighted least
  • Previous by thread: Re: Precicely defining plot size
  • Next by thread: Re: Precicely defining plot size