ExtraAxes for Plot[]
- To: mathgroup at smc.vnet.net
- Subject: [mg88324] ExtraAxes for Plot[]
- From: roby.nowak at gmail.com
- Date: Thu, 1 May 2008 06:28:24 -0400 (EDT)
Dear all,
maybe this is valuable for some of you.
Below you can find a Mathematica Package containing 2 Functions one for
additional X-Axes generation and one for Y-Axes.
The additional Axes are included in the Epilog of Plot.
Plot[......,
Epilog -> {..., ExtraXAxes[......], ...}
]
Multiple Axes in both directions can be specifyed.
Standard Mathematica Axes Options such as TicksStyle or AxesStyle can be used.
Below the Package you can find an example
(* start of package code *)
BeginPackage["ExtraAxes`"]
ExtraXAxes::usage="ExtraXAxes[{FromTick, ToTick, TickStep},
{InsertStartPos,InsertEndPos},YInsertPos]"<>"\n"<>
"\tGenerates an additional X-Axes with range FromTick to ToTick and
step TickStep."<>"\n"<>
"\tThe additional Axes is inserted from x: InsertStartPos to
InsertEndPos at y: YInsertPos."<>"\n"<>
"\tOptions can be passed e.g. TicksStyle-
>Directive[{Blue,Thick}]"<>"\n"<>
"\tInclude the additional Axes by means of Epilog->ExtraXAxes[]"
ExtraYAxes::usage="ExtraYAxes[{FromTick, ToTick, TickStep},
{InsertStartPos,InsertEndPos},XInsertPos]"<>"\n"<>
"\tGenerates an additional Y-Axes with range FromTick to ToTick and
step TickStep."<>"\n"<>
"\tThe additional Axes is inserted from y: InsertStartPos to
InsertEndPos at x: XInsertPos."<>"\n"<>
"\tOptions can be passed e.g. TicksStyle-
>Directive[{Blue,Thick}]"<>"\n"<>
"\tInclude the additional Axes by means of Epilog->ExtraYAxes[]"
Begin["`Private`"]
ExtraXAxes[{from_,to_,step_},{xpos_,xend_},ypos_,opts_:{}]:=
Graphics[{},AspectRatio->Full,ImagePadding->0,Axes-
>{True,False},Sequence@opts,
PlotRange->{{from-1/2 step,to+1/2 step},0{-1,1}},Ticks->{Table[i,
{i,from,to,step}],None}]//Inset[#,{xpos,ypos},{from,0},((step (xend-
xpos))/(to-from)+xend-xpos){1,1}]&
ExtraYAxes[{from_,to_,step_},{ypos_,yend_},xpos_,opts_:{}]:=
Graphics[{},AspectRatio->Full,ImagePadding->0,Axes-
>{False,True},Sequence@opts,
PlotRange->{0{-1,1},{from-1/2 step,to+1/2 step}},Ticks->{None,Table[i,
{i,from,to,step}]}]//Inset[#,{xpos,ypos},{0,from},((step (yend-ypos))/
(to-from)+yend-ypos){1,1}]&
End[]
EndPackage[]
(* start sample test code *)
Plot[{Sin[x],2+Cos[x]},{x,0\[Pi],3\[Pi]},ImageSize->600,PlotRange-
>All,PlotStyle->{Black,Blue},
Epilog->{ExtraXAxes[{1/2\[Pi],3/2\[Pi],\[Pi]/8},{1/2\[Pi],3/2\[Pi]},
2,TicksStyle->Directive[Darker@Magenta,Italic,
Bold]],ExtraYAxes[{-150,350,50},{-1.5,3.5},8,{TicksStyle-
>Directive[Blue,Large],AxesStyle->Directive[Orange,Thick]}]}]