Re: Number Formatting Along Axes
- To: mathgroup at smc.vnet.net
- Subject: [mg81460] Re: Number Formatting Along Axes
- From: "David Park" <djmpark at comcast.net>
- Date: Sun, 23 Sep 2007 21:22:46 -0400 (EDT)
- References: <fd59bs$38o$1@smc.vnet.net>
It is a matter of writing a number formatting function with NumberForm and
using most of the artillery. For your purpose the critical option is
ExponentFunction. If the ExponentFunction applied to the number returns
Null, then nonexponent formatting is used. So it is the Null Function and
not just plain Null.
nformat[x_, digitlist_] :=
Which[
x == 0, 0,
True,
NumberForm[N[x], digitlist,
NumberPadding -> {" ", "0"},
NumberSigns -> {"-", " "},
ExponentFunction -> (Null &),
DigitBlock -> 3,
NumberSeparator -> {"\[ThinSpace]", "\[ThinSpace]"}]]
Then, using DrawGraphics, I would use CustomTicks to generate the tick marks
and labels. Here is a sample plot. NoTickLabels uses the same tick marks but
gets rid of the labels.
Needs["DrawGraphics6`DrawingMaster`"]
yticks = CustomTicks[Identity, {-10^7, 10^7, 2.5*10^6, 5},
CTNumberFunction -> (nformat[#, {8, 2}] &)];
Draw2D[
{Draw[10^7 Sin[x], {x, 0, 2 \[Pi]}]},
AspectRatio -> 1/2,
Frame -> True,
FrameLabel -> {x, f[x]},
FrameTicks -> {{yticks, yticks // NoTickLabels}, {Automatic,
Automatic}},
PlotLabel -> "Nonscientific y Tick Labels",
ImageSize -> 400]
However, a less cluttered set of labels can be obtained by putting the
inverese exponent in the axis label and scaling the tick marks to a
reasonable domain. This is what is usually done in scientific publications.
yticks = CustomTicks[# 10^7 &, {-1, 1, 0.25, 5},
CTNumberFunction -> (nformat[#, {3, 2}] &)];
Draw2D[
{Draw[10^7 Sin[x], {x, 0, 2 \[Pi]}]},
AspectRatio -> 1/2,
Frame -> True,
FrameLabel -> {x,
Style[Row[{f[x], " \[Times] \!\(\*SuperscriptBox[\"10\",
RowBox[{\"-\", \"7\"}]]\)"}], FontSize -> 12]},
FrameTicks -> {{yticks, yticks // NoTickLabels}, {Automatic,
Automatic}},
PlotLabel -> "Nonscientific y Tick Labels",
ImageSize -> 400]
--
David Park
djmpark at comcast.net
http://home.comcast.net/~djmpark/
"Bruce Colletti" <vze269bv at verizon.net> wrote in message
news:fd59bs$38o$1 at smc.vnet.net...
> Re 6.0.1.
>
> By default, y-axis values display in scientific form. How can a user
> specify another format, e.g., XXXXX.XX or integer?
>
> Thankx.
>
> Bruce
>