3
$\begingroup$

According to the Documentation

LogLogPlot effectively generates a curve in which Log[f] is plotted against Log[x], but with tick marks indicating the original values of f and x.

So for, say,

f1[t_] := 1.71*^-10 + 1.08*^-11 t^0.22

f2[t_] := 1.62*^-10 + 1.82*^-11 t^0.18

it will produce

LogLogPlot[{f1[t], f2[t]}, {t, 0.001, 10000}, 
 PlotStyle -> {Blue, Red}, Axes -> False, Frame -> True]

enter image description here

I want the ticks of the axis to have the logarithmic values.

I can achieve this as follows

modf1[x_] = Log[10, f1[t] /. (a_ + b_ t_^o_) -> a + b 10^(o x)];
modf2[x_] = Log[10, f2[t] /. (a_ + b_ t_^o_) -> a + b 10^(o x)];

Plot[{modf1[x], modf2[x]}, {x, -3, 4}, PlotStyle -> {Blue, Red}, 
 Axes -> False, Frame -> True]

enter image description here

But I think there must be an option of LogLogPlot that I am missing.

Thanks.

$\endgroup$
3
$\begingroup$

You could "trick" Plot into doing what you want directly, more or less along the lines of what you showed yourself:

Plot[
  Log[10, #[10^x]] & /@ {f1, f2}, {x, -4, 4}, 
  Evaluated -> True, 
  PlotStyle -> {Blue, Red}, Axes -> False, Frame -> True
]

Mathematica graphics

This approach seems more readable to me, and it doesn't require you to generate your own FrameTicks.

$\endgroup$
  • $\begingroup$ Thanks a lot. I am surprized that there is not a single option of LogLogPlot for doing this. $\endgroup$ – Dimitris Oct 1 '15 at 9:19
  • $\begingroup$ @dimitris In my opinion, your result requires plotting a different function altogether, whereas LogLogPlot and similar functions specialize on producing plots of the given function on logarithmic scales. In other words, you want to plot the logarithm of a function on a linear scale; LogLogPlot plots the function value itself on a logarithmic scale. $\endgroup$ – MarcoB Oct 1 '15 at 9:26
  • $\begingroup$ I see your point. You are right. $\endgroup$ – Dimitris Oct 1 '15 at 9:35
2
$\begingroup$

FrameTicks can be used. Assuming you wish equally spaced ticks and only on bottom and left frame components:

LogLogPlot[{f1[t], f2[t]}, {t, 0.001, 10000}, 
 PlotStyle -> {Blue, Red}, Frame -> True, 
 FrameTicks -> {{Table[{10^j, NumberForm[j, 3]}, {j, Log10[f1[0.001]],
       Log10[f1[10000]], (-Log10[f1[0.001]] + Log10[f1[10000]])/5}], 
    None}, {{#, Log10@#} & /@ PowerRange[0.001, 10000, 100], None}}]

You could change divisions to suit.

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.