Message Boards Message Boards

[✓] Why does InterpolationOrder seem to have no effect on ListPlot3D[]?


This code shows a 3D plot of the elevations in California:

ListPlot3D[{CityData[#, "Longitude"], CityData[#, "Latitude"], 
    CityData[#, "Elevation"]} & /@ 
  CityData[{All, "California", "UnitedStates"}]
 , ColorFunction -> "Topographic"
  , MeshFunctions -> {#3 &}
 , AxesLabel -> { None, None, "Elevation"}
 , InterpolationOrder -> 1

I am trying to make the plot "smoother". I could not find a PlotPoints option for ListPlot3D[] and InterpolationOrder is a valid option but appears to have no effect on this graphic . Thanks in advance.

POSTED BY: Aeyoss Antelope
2 months ago
  1. I think for irregularly spaced points (an "unstructured grid"), the only interpolation orders available are 0 and 1.

  2. The PlotPoints in a list plot are the points the user supplies, in this case, the Californian cities.

  3. In case you didn't notice, the domain of the plot is the (plane) convex hull of the cities long./lat. coordinates, which goes outside the boundaries of California.

What can you do?

  1. With FEM functionality (such as ToElementMesh and ElementMeshInterpolation), you can construct a quadratic interpolation, provided you could supply the data for the quadratic points. (Seems hard in this case.)

  2. You could get more data from somewhere, or use GeoElevationData[].

  3. This is harder. You could probably use California's polygon to define the boundary of the mesh (providing the elevations at the vertices).

POSTED BY: Michael Rogers
2 months ago

Group Abstract Group Abstract