Re: Aligning 2 Sets of Axes at {0,0}; Rotated & Standard Position
- To: mathgroup at smc.vnet.net
- Subject: [mg123133] Re: Aligning 2 Sets of Axes at {0,0}; Rotated & Standard Position
- From: "David Park" <djmpark at comcast.net>
- Date: Thu, 24 Nov 2011 06:56:44 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <27299681.71314.1322049394785.JavaMail.root@m06>
Bill, There is an easy and natural way to do this with the Presentations application. It has the routines XTickLine and YTickLine for drawing our own tick scales, (and also TickLine3D for raising these to Graphics3D objects). XTickLine has the form: XTickLine[{xmin,xmax,yloc},{rangemin,rangemax}, {labelstart,labelend,increment},subdivisions] with a similar form for YTickLine. We can then specify your graphic as follows: << Presentations` First specify the normal axes. xaxis = XTickLine[{-30, 30, 0}, {-30, 30}, {-30, 30, 10}, 5] /. Text[0, __] -> Sequence[]; yaxis = YTickLine[{-30, 30, 0}, {-30, 30}, {-30, 30, 10}, 5] /. Text[0, __] -> Sequence[]; where we eliminated the 0 tick value to prevent clutter around the origin. We then just draw one thing after another. We don't have to use Prolog, Epilog, Show, graphics level jumping or Inset. Draw2D[ {ContourDraw[ 17*x^2 - 48*x*y + 31*y^2 + 49 == 0, {x, -30, 30}, {y, -30, 30}], xaxis, yaxis, {Red, xaxis, yaxis} // RotateOp[36.8699 \[Degree], {0, 0}]}, ImageSize -> 300] RotateOp is just a convenient postfix form of Rotate. Rotate by default rotates about the center of the graphics primitives, but a second parameter allows you to specify the rotation center. David Park djmpark at comcast.net http://home.comcast.net/~djmpark/ From: Bill [mailto:WDWNORWALK at aol.com] Subj: Aligning Two Sets of Axes at {0,0}; Rotated and Standard Position in one plot. Hi: I have the following Mathematica 8.0.4 code that gives me a satisfactory plot: a=17;b=-48;c=31; (ArcTan[b/(a-c)])/2; N[(%)*(180/Pi)]; Print["Majoraxis: Angle in Decimal Degrees= ",%] axes=Graphics[Point[{0,0}],PlotRange->{{-12,12},{-12,12}},Axes->True,AxesSty le->{Directive[{Red,Thin}],Directive[{Black,Thin}]},AxesLabel->{"'x","'y"},A spectRatio->1,ImageSize->500]; ContourPlot[17*x^2-48*x*y+31*y^2+49==0,{x,-12,12},{y,-12,12},AspectRatio->1, Axes->True,AxesStyle->{Directive[{Red,Thin}],Directive[{Black,Thin}]},AxesLa bel->{"X","Y"},Background->LightGray,ImageSize->500,Prolog->Inset[Rotate[Gra phics[axes],36.8699Degree],{.1,.7}]] However, my objective here is to combine the two plots with the two sets of axes centered automatically. As my code is now, I have to use a trial-and-error visual inspection method, and manually input the location of the rotated axes to match the main plot axes' center at standard position. Ref: See {.1,.7} in ...Inset[Rotate[Graphics[axes],36.8699Degree],{.1,.7}]] (In another example using another equation that I ploted, the alignment values were different yet. So for some reason, these numbers don't seem to be constants from one plot to another.) I have tried AxesOrigin->{0,0} in the plots, but this doesn't seem to matter. Any help will be appreciated. Tia, Bill