# CustomTicks and ListPlot - Can't seem to get them working

I have a very large list of numbers like

list={{a1,b1},{a2,b2},...,{ai,bi}}


where a1 ranges between 10^-9 and 10^-5 and bi varies between 0 and 100. I have generated successfully the plots and am now tweaking them with CustomTicks to look a bit better. But I'm not able to get the XX axis as I want.

The YY axis should be linear and the XX axis should be Logarithmic. But the best I could get was this: Could someone please tell me what I'm doing wrong? I've been trying different things for so long and I can't figure this out.

Here is my code:

a = {#, Random[Real, {0, 100}]} & /@
Union[     Range[1*^-9, 1*^-8, 1*^-9]
~Join~Range[1*^-8, 1*^-7, 1*^-8]
~Join~Range[1*^-7, 1*^-6, 1*^-8]
~Join~Range[1*^-6, 1*^-5, 1*^-7]]

ListLogLinearPlot[a, Joined ->True, Axes -> False, FrameLabel -> {{"A", None}, {"B", None}},
Frame -> {{True, False}, {True, False}}, LabelStyle -> {Bold, 25},
PlotStyle -> {{Thickness[0.003], Black},
{Thickness[0.003], Dashing[0.015], Black},
{Thickness[0.003], Dashing[0.005], Black}},
PlotRange -> {0, 100}, ImageSize -> {800, 600},
FrameTicks - {{LinTicks[0, 100, 20, 2], None},
{LogTicks[E, -8, -5], None}},
FrameTicksStyle -> Directive[Thickness[0.01]]]

• This uses the LevelScheme package from wnsl.physics.yale.edu/levelscheme. Have you loaded the package? – Sjoerd C. de Vries Sep 6 '12 at 18:40
• Also, one Rule is incomplete ('-' instead of '->'), but that doesn't seem to be the cause. – Sjoerd C. de Vries Sep 6 '12 at 18:57

The solution can be found in the CustomTicks manual:

Note that plots with logarithmic axes are actually generated as linear plots, but where the logarithm has been taken of either the x-axis or y-axis variable. Specifically, for base 10,

1. a logarithmic (or linear-log) plot of $f$ is obtained by plotting $\log_{10} f(x)$,

2. a log-linear plot of $f$ is obtained by plotting $f(10^x)$, and

3. a log-log plot of $f$ is obtained by plotting $\log_{10}f(10^x)$ on ordinary linear axes. A similar procedure holds for bases other than 10.

So you really need a normal ListPlot with transformed coordinates instead of a ListLogLinearPlot. Note that the range you used for the log ticks was incorrect too.

a = {Log[a[[All, 1]]], a[[All, 2]]}\[Transpose]
(* think hard about why the Log here instead of the 10^x mentioned in (2) above *)

ListPlot[a, Joined -> True, Axes -> False,
FrameLabel -> {{"A", None}, {"B", None}},
Frame -> {{True, False}, {True, False}}, LabelStyle -> {Bold, 25},
PlotStyle -> {{Thickness[0.003], Black}, {Thickness[0.003],
Dashing[0.015], Black}, {Thickness[0.003], Dashing[0.005],
Black}},
PlotRange -> {0, 100}, ImageSize -> {800, 600},
FrameTicks -> {{LinTicks[0, 100, 20, 2], None},
{LogTicks[E, -20, -11], None}},
FrameTicksStyle -> Directive[Thickness[0.01]]
] • or just a[[All, 1]] = Log[a[[All, 1]]]. – Mike Honeychurch Sep 6 '12 at 22:04
• @MikeHoneychurch Replacement in-place. Indeed, more polished. – Sjoerd C. de Vries Sep 6 '12 at 22:21
• Thank you guys. Now I understand how this works! Thank you Sjoerd – Sosi Sep 7 '12 at 13:46