Equi-sized tick labels
- To: mathgroup at smc.vnet.net
- Subject: [mg85266] Equi-sized tick labels
- From: Will Robertson <wspr81 at gmail.com>
- Date: Tue, 5 Feb 2008 05:56:29 -0500 (EST)
Dear all,
When Mathematica creates tick marks in plots, it uses a ratio of the
plot size to calculate their length. Unfortunately, it treats
horizontal and vertical sizes separately so non-square plots will have
unequal tick marks in the two different directions. This can look
rather ugly, in my opinion.
Luckily, it's an easy problem to fix. Please find attached some code
to "normalise" the length of the ticks used in plots so that non-
square plots don't have uneven ticks horizontally and vertically. It
uses the CustomTicks package, whose author I shall contact about
rolling this functionality into his package.
Have fun,
Will
Here is the code. It may be modified and distributed freely under the
Apache Licence, v2.
<< "CustomTicks`"
ticksize := 0.02
smallticksize := 0.01
aspectratio := 0.8
padratio := 1.5
XTicks[a_, b_, opts___] := LinTicks[a, b,
MajorTickLength -> {ticksize, 0},
MinorTickLength -> {smallticksize, 0},
opts
]
YTicks[a_, b_, opts___] := LinTicks[a, b,
MajorTickLength -> {ticksize/aspectratio, 0},
MinorTickLength -> {smallticksize/aspectratio, 0},
opts
]
EmptyXTicks[a_, b_] := XTicks[a, b, ShowTickLabels -> False]
EmptyYTicks[a_, b_] := YTicks[a, b, ShowTickLabels -> False]
SetOptions[Plot, Frame -> True, AspectRatio -> aspectratio,
FrameTicks -> {{XTicks, EmptyXTicks}, {YTicks, EmptyYTicks}},
PlotRangePadding ->
{Scaled[padratio*ticksize],
Scaled[padratio*ticksize/aspectratio]}];
Plot[x, {x, 0, \[Pi]}]