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