Contour plot meshed in polar coordinates

Hi everyone,
I want to plot a surface function Z(rho, theta), where rho is the radial and theta is the azimuth coordinates. My first step is to create a meshgrid of rho and theta and calculate the function Z at each grid. I then convert the rho-theta grid to X-Y Cartesian coordinates grid. The Surface plot and its z-projection contour in fig00 are based on X,Y,Z coordinates and are all correct. I have a problem when I want to plot only the contour in fig0.

go.Contour requires one-dimensional coordinates that in Cartesian coordinates are no longer uniform. Moreover, using rho-theta arrays does not produce circular contours as is shown in fig0.

Would anyone be able to assist me with this?

Thank you very much.

Payman
โ€˜โ€™โ€™
rho = np.linspace(0, dia / 2, 20)
theta= np.linspace(0, 2 * np.pi, 20)
RR, P = np.meshgrid(rho, theta)
X, Y = RR * np.cos(P), RR * np.sin(P)

trace00 = go.Surface(x= X, y= Y, z= ZZ, colorscale=โ€˜rainbowโ€™)
layout00 = go.Layout(title=โ€™ Tear Layer Mapโ€™)
fig00 = go.Figure(data=[trace00], layout=layout00)
fig00.update_traces(contours_z=dict(show=True, usecolormap=True,
highlightcolor=โ€œlimegreenโ€, project_z=True))
st.plotly_chart(fig00)

trace0 = go.Contour( x= RR[0,:], y= P[:,0], z= ZZ, connectgaps=True)
layout0 = go.Layout(margin=dict(l=0, r=0, b=0, t=0))
fig0 = go.Figure(data=[trace0], layout=layout0)
fig0.update_layout(polar_bargap=0)
st.plotly_chart(fig0)
โ€˜โ€™โ€™
contour1
contur2

@paymanrajai ,
There is no straighforward method to plot a polar contour. You can use a geometric_transformation of the intensity array z, associated to the above cartesian (non-circular) contour plot, following this example.

1 Like

I appreciate your response, @empet. There seems to be a problem with the link to the example mentioned. Would you mind checking it again?

@paymanrajai
My browser opens the posted link.
I paste it here again:
https://chart-studio.plotly.com/~empet/16188/polar-contour-plot-with-plotly/#/

1 Like