MathGroup Archive 2011

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

Search the Archive

Re: Precicely defining plot size

  • To: mathgroup at smc.vnet.net
  • Subject: [mg123560] Re: Precicely defining plot size
  • From: Mike H <mike.honeychurch at gmail.com>
  • Date: Sun, 11 Dec 2011 03:47:23 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <jbspm1$3r9$1@smc.vnet.net>

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
>


  • Prev by Date: Re: NMinimize problem: fct minimized uses FindRoot
  • Next by Date: Re: NMinimize problem: fct minimized uses FindRoot
  • Previous by thread: Re: Precicely defining plot size
  • Next by thread: Mathematica Question