I have a list of data points that I would like to turn into a 3D Surface with adjustable degree of smoothing for readability. The data consist of absorption values between -0.01 and 0.01 measured at 200 equally spaced wavelengths and 12 different temperatures between 80 K and 293.2 K.
There seem to be several functions there specifically to do that, but so far I succeded with non. While ListPlot3D
produces a nice surface but without options for smoothing, ListSurfacePlot3D
produces some strange geometric figures
uri=FileNameJoin[{$HomeDirectory, "Downloads", "NaDpH5260300UVVis80K.xlsx"}];
NaDpH5260300UVVis80K = Partition[Flatten[Import[uri]], 3];
ListSurfacePlot3D[NaDpH5260300UVVis80K,
ColorFunction -> ThermometerColors",
Mesh -> False]
as well as ListContourPlot3D
:
ListContourPlot3D[NaDpH5260300UVVis80K,
ColorFunction -> ThermometerColors",
Mesh -> False]
I have managed a smoothed surface via
f = Interpolation[NaDpH5260300UVVis80K, InterpolationOrder -> 2];
Plot3D[ f[x, y], {x, 80, 293.}, {y, 300, 700},
ColorFunction -> "ThermometerColors"
(*
Interpolation::udeg: Interpolation on unstructured grids is currently
only supported for InterpolationOrder->1 or InterpolationOrder->All.
Order will be reduced to 1. >>
InterpolatingFunction::dmval: Input value {80.0152,300.029} lies
outside the range of data in the interpolating function.
Extrapolation will be used. >>
*)
but this function can only interpolate 3D data to first order which removes too much detail.
The code used in the answer to this question might be what I need, but I am so far incapable of adapting it to my needs.
InterpolationOrder -> ...
directly toListPlot3D
$\endgroup$