3D Heatmap

Hello!
Is there a way creatinge a 3D heatplot using Plots.jl?

I try to visualize a 4D plot by plotting a 3D sphere and coloring the surface according to a function f.
This is the closest I was able to do:

plot(x,y,z, st=:surface)

but now I would like to set the colors on the surface by a function f(x,y,z) and not according to the height z.

Thank you for your help

You can use Plots.jl pyplot() or plotlyjs() backends to produce something like this:
Plots_plotlyjs_3d_surface_heatmap

Code example:

using Plots; plotlyjs()  #or: pyplot()
n = 300
θ = LinRange(0,π,n)
ϕ = LinRange(0,2π,n)
xx = @. sin(θ)*cos(ϕ')
yy = @. sin(θ)*sin(ϕ')
zz = @. cos(θ)*ones(n)'
surface(xx, yy, zz, fill_z = 5*sin.(10xx .* yy), size=(600,600))

The user function needs to be mapped onto the meshgrid and then fill_z takes over to assign colors from the colormap.

4 Likes

Thank you a lot!

1 Like

Let us know if you get a nice plot on the sphere that you can share.

It’s always fun to see what one can get by poking mathematical functions around:

Ex.1.1: Golden stripes-1


Ex.1.2: Golden stripes-2

Ex.1.3: Golden stripes-3

4 Likes

what function is this?

How about a little game to spice things up, inviting interested people to share examples without revealing the underlying mathematical function, say until Christmas? :christmas_tree:

2 Likes

looks great!

I was doing something very classic:

I will definitly play around more :slight_smile:

2 Likes

5 Likes

Bezier surface colormapped according to the green component values of a cat image.
cat-on-bezierSNV
A different camera eye position:
cat-on-bezierS

2 Likes