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
- References:
- Re: Precicely defining plot size
- From: Armand Tamzarian <mike.honeychurch@gmail.com>
- Re: Precicely defining plot size