I’m trying to build a 3D surface plot with color in log10 scale. I just want the color to be in the log10 scale NOT the actual values itself.

```
N = 51
x = range(-10, stop = 10, length = N)
y = x
f(x,y)=x^2+y^2
Plots.plot(x,y,f,st=:surface,color=:jet,camera=(25,65))
```

See below:

Here is the output with Logscale created using GNUPLOT.

Check out the documentation. It is pretty

2 Likes

Thank you. The link really helped.

I have used log scale, but still unable to reproduce the chart from `gnuplot`

.

```
using Plots
N = 51
x = range(-10, stop = 10, length = N)
y = x
f(x,y)=x^2+y^2
out = Plots.plot(x,y,f,st=:surface,color= cgrad(:jet,scale=log),camera=(25,65))
savefig(out,"out.png")
```

The key driving factor is `z`

the need to included in `cgrad`

. How would one modify `z`

to get a replica of my original plot.

I figured it out:

```
using Plots
N = 51
x = range(-10, stop = 10, length = N)
y = x
f(x,y)=x^2+y^2
z = [0.001,0.01,0.05,5,50,100,200]
out = Plots.plot(x,y,f,st=:surface,color= cgrad(:jet,z,scale=log),camera=(25,65))
savefig(out,"out.png")
```

It would be great if we can automatically estimate values `z`

like `gnuplot`

.

I’m trying to do this with contours but it’s not working.

```
using Plots; pyplot()
f(x, y) = exp(x^2 + y^2)
x = range(-3, 3, length=100)'
y = range(-3, 3, length=100)
z = @. f(x, y)
zc = 10 .^ range(log10(minimum(z)), log10(maximum(z)), length=100)
contourf(x, y, z, colorbar_scale=:log10, color=cgrad(:turbo, zc, scale=:log10))
```

But most of the plot is blue, when it should be a more gradual gradient. In other words, I’d like to have something like this, or this, where each level is an order of magnitude. Is this possible?

You can play with `plot()`

's keyword arguments `levels`

and `colorbar_ticks`

to produce discrete or smooth contour maps:

1 Like

Ok I figured it out. Unfortunately it requires plotting \log z instead of z directly…code below for reference.

```
using Plots, LaTeXStrings
pyplot()
h(x, y) = exp(x^2 + y^2)
x = range(-3, 3, length=100) |> adjoint
y = range(-3, 3, length=100)
z = @. h(x, y)
tv = 0:8
tl = [L"10^{%$i}" for i in tv]
contourf(x, y, log10.(z), color=:turbo, levels=8, colorbar_ticks=(tv, tl),
aspect_ratio=:equal,
title=L"\exp(x^{2} + y^{2})",
xlabel=L"x",
ylabel=L"y")
```