# Adding map to 3D plot?

I've made a 3D plot of a pressure surface over the region 160W-20W, 20N-80N - the right panel and I would like to put a map under it, probably just continental outlines for simplicity. I'm just updating to Mathematica 10. The plot on the left was made with other software and is just included to show the geographic domain. The plot on the right was made with:

ListPlot3D[data, Mesh -> False, BoxRatios -> {0.8*140, 60, 20}, ViewPoint -> Front, ColorFunction -> ColorData["Rainbow"]]

Thanks!

• Could you show more of your code? i.e. The functions you are using to plot each.
– wgwz
Feb 19, 2015 at 15:22
• This question might be of help. mathematica.stackexchange.com/questions/26301/… Feb 19, 2015 at 15:27

Also:

g1 = {EdgeForm@Black,LightGray,Opacity@.1, CountryData[#, "Polygon"]&/@ CountryData["SouthAmerica"]};
DensityPlot[Sin[x] Sin[y], {x, -4, 4}, {y, -3, 3}, ColorFunction -> "SunsetColors", Frame -> None,
Epilog -> Inset@Graphics@g1] coords = List @@ CountryData["World", "FullPolygon"];
c1 = Map[Select[#, -160 < #[] < -20 && 20 < #[] < 80 &] &, coords, {2}];
g1 = Graphics[{Line /@ c1, Opacity[.1], Rectangle @@ {{-160, 20}, {-20, 80}}}, PlotRangePadding -> None]
ar = AspectRatio /. AbsoluteOptions[g1, AspectRatio][];

DensityPlot[Sin[x] Sin[y], {x, -4, 4}, {y, -3, 3}, Frame -> None,
Epilog -> Inset[g1, Center, Center, Scaled], AspectRatio -> ar, • Thanks, that's the sort of thing I'm looking for - but I'd like to be able to specify the range in terms of latitude and longitude.
– Matt
Feb 21, 2015 at 14:03
• @Matt See edit please Feb 21, 2015 at 16:06

Assuming your map is a ContourPlot[] and your geopotential thing is a Plot3D[]. I think something like the following example could work:

one = ContourPlot[Sin[x] Sin[y], {x, 0, 2 Pi}, {y, 0, 2 Pi}, ContourShading -> None]
two = DensityPlot[Sin[x] Sin[y], {x, 0, 2 Pi}, {y, 0, 2 Pi}]
Show[{two,one}]


If your data for the pressure/geopotential is a list then use ListDensityPlot[] in step two. So long as your plots are both 2D, which should be doable I think a simple usage of the Show[] function will do the trick.

(*Output of the above code*) • Thanks for the reply. I'm using ListPlot3D and I'd like to add a geographical map in the background over the range 160W-20W, 20N-80N.
– Matt
Feb 21, 2015 at 14:07