Log and semilog plots

by Martin D. Maas, Ph.D

A good way to plot numerical data that spans a very wide range of values, is to employ a logarithmic scale in one or both axis.

In order to set one or both axes to a log scale, you can employ the argument yaxis=:log10, and/or the corresponding argument xaxis=:log10.

For example, a function that grows very rapidly, like an exponential, can look better on a semilog-y plot:

Julia Semilog Plot

using Plots

f(x) = exp(x)
p1 = plot(f, 1, 10, lw=3,
            title="Regular Plot of exp(x)",
            label=false)

p2 = plot(f, 1, 10, 
            yscale=:log10, lw=3,
            title="Semilog-y plot of exp(x)",
            label=false)

plot(p1,p2,layout=(2,1))

While when we want to highling that a function is decaying like a certain power, we can do so with a log-log plot:

Julia log-log Plot

g(x) = 1/x^4
p1 = plot(g, 1, 1000, lw=3,
            title= "Regular plot of x^(-4)",
            label=false)

p2 = plot(g, 1, 1000, lw=3,
            yscale=:log10, 
            title="Semilog-y plot of x^(-4)",
            label=false)

p3 = plot(g, 1, 1000, lw=3,
            xscale=:log10, 
            yscale=:log10, 
            title="Log-log plot of x^(-4)",
            label=false)

plot(p1,p2,p3,layout=(3,1))