Re: Ticks question
- To: mathgroup at smc.vnet.net
- Subject: [mg90170] Re: Ticks question
- From: "David Park" <djmpark at comcast.net>
- Date: Tue, 1 Jul 2008 07:00:19 -0400 (EDT)
- References: <g4a6ta$8tv$1@smc.vnet.net>
The Presentations package has a LinearScale routine that will pick a given
number of 'even' tick values for a range. This can then be used in
CustomTicks to generate tick marks and labels. Here is an example that gets
tick values by extracting the minimum and maximum values from a plotted
line:
Needs["Presentations`Master`"]
Module[{g, work, minvalue, maxvalue, range, yticks},
g = Draw[2 Sin[x] + x^2 - 3 x^3, {x, -2, 2}, PlotRange -> All];
work = Join@
Cases[g, Line[args_] :> Part[Transpose[args], 2], \[Infinity]];
{minvalue, maxvalue} = {Min[work], Max[work]};
range = maxvalue - minvalue;
yticks = CustomTicks[Identity, LinearScale[minvalue, maxvalue, 8]];
Draw2D[
{g},
AspectRatio -> 0.5,
Frame -> True,
FrameTicks -> {Automatic, yticks, Automatic,
yticks // NoTickLabels},
PlotRange -> All,
PlotRangePadding -> {Automatic, 0.1 range},
ImageSize -> 300]
]
There is also a command DrawingWidths2D (and 3D) that extracts the widths,
center, and max and min values for a set of graphical primitives. Here is an
example:
quadratic = x^2 + 2 x y + 1.5 y^2 + 3 x - y + 2 == 0;
{{xrange, yrange}, {xcenter, yccenter}, {{xmin, xmax}, {ymin, ymax}}} =
DrawingWidths2D[{ContourDraw[quadratic, {x, -15, 15}, {y, -15, 15}]}]
{{9.94158,8.11799},{-5.50227,4.00035},{{-10.4731,-0.531481},{-0.0586483,8.05934}}}
However I think this has trouble with the Circle primitive where Mathematica
doesn't take into account the radius.
--
David Park
djmpark at comcast.net
http://home.comcast.net/~djmpark/
"Aaron Fude" <aaronfude at gmail.com> wrote in message
news:g4a6ta$8tv$1 at smc.vnet.net...
> Hi,
>
> Can't figure out: how does one ask for a certain number of tick marks
> without knowing what the range of the x-axis is as in ParametricPlot?
>
> For example, I want 4 tick marks.
>
> On a related note, suppose I want no tick marks but instead want to
> only see an indication of the range shown. How do I accomplish that?
> Perhaps it could be accomplished by having a single tick mark?
>
> Thanks!
>