From this site : xmin = min(a(:,1)); ymin = min(a(:,2)); xmax = max(a(:,1)); ymax = max(a(:,2)); xi = xmin : 0.02*(xmax-xmin):xmax; yi = ymin : 0.02*(ymax-ymin):ymax; zi = griddata(a(:,1), a(:,2), a(:,3), xi', yi); surf(xi, yi, zi) You can do this in matplotlib too, but its not built in. See this post