Saturday, 17 September 2022

Plot density function on sphere surface using plotly (python)

I'm interested in plotting a real-valued function f(x,y,z)=a, where (x,y,z) is a 3D point on the sphere and a is a real number. I calculate the Cartesian coordinates of the points of the sphere as follows, but I have no clue on how to visualize the value of f on each of those points.

import plotly.graph_objects as go
import numpy as np

fig = go.Figure(layout=go.Layout(title=go.layout.Title(text=title), hovermode=False))

# Create mesh grid for spherical coordinates
phi, theta = np.mgrid[0.0:np.pi:100j, 0.0:2.0 * np.pi:100j]

# Get Cartesian mesh grid
x = np.sin(phi) * np.cos(theta)
y = np.sin(phi) * np.sin(theta)
z = np.cos(phi)

# Plot sphere surface
self.fig.add_surface(x=x, y=y, z=z, opacity=0.35)

fig.show()

I would imagine/expect/like a visualization like this

enter image description here

Additionally, I also have the gradient of f calculated in closed-form (i.e., for each (x,y,z) I calculate the 3D-dimensional gradient of f). Is there a way of plotting this vector field, similarly to what is shown in the figure above?



from Plot density function on sphere surface using plotly (python)

No comments:

Post a Comment