I’m trying to create a contour plot with arbitrarily placed data points, but I can’t seem to get it to work because contour expects x and y coordinates on a grid. I’ve sort of gotten around this using a 3D surface plot with Z=0, but it seems wrong, plus I have to get the zoom and angle right.
Is there any way to just make a contour plot out of this directly?
Welcome to Plotly forum!
You can plot a contour over irregular data, by defining a regular grid that covers the initial data, and interpolating the so called z-values at the regular grid points:
import plotly.graph_objects as go
import numpy as np
from scipy.interpolate import griddata
#generate irregular data
xm, xM = x.min(), x.max()
ym, yM = y.min(), y.max()
#z-values at the irregular data
z = np.sin(np.pi*2*(x*x+y*y));
#Define a regular grid over the data
xr = np.linspace(xm, xM, 200)
yr= np.linspace(ym, yM, 100)
xr, yr = np.meshgrid(xr, yr)
#evaluate the z-values at the regular grid through cubic interpolation
Z = griddata((x, y), z, (xr, yr) , method='cubic')
fig=go.Figure(go.Contour(x=xr, y=yr[:, 0], z=Z,
fig.update_layout(title_text='Contour plot from irregular data',
Thanks for the suggestion, I will try that.
It does seem like something which would be nice to have as a built-in since it already works with 3D.
Thanks a bunch. I was unable to have my contours cross the zero boundaries otherwise