# Build a 3D heat map plot from 4D data

Can we make a contourPlot3D plot like given here using these values? The value of x range from 0 to 8, y range from 0 to 1 and z range from -1 to 1 for my data. This plot I got from another post but couldn't use the code there to solve my problem. The first plot is drawn in python. The colormap is the fourth value in data and each of the dots represent the each data given.

 data={{0., 0., -1.075, 0.996823}, {0., 0., -0.5375, 0.998664}, {0., 0., 0.,
1.00127}, {0., 0., 0.5375, 1.00311}, {0., 0.26875, -1.075,
0.997039}, {0., 0.26875, -0.5375, 0.998881}, {0., 0.26875, 0.,
1.00149}, {0., 0.26875, 0.5375, 1.00333}, {0., 0.5375, -1.075,
0.997344}, {0., 0.5375, -0.5375, 0.999187}, {0., 0.5375, 0.,
1.00179}, {0., 0.5375, 0.5375, 1.00363}, {0., 0.80625, -1.075,
0.997561}, {0., 0.80625, -0.5375, 0.999403}, {0., 0.80625, 0.,
1.00201}, {0., 0.80625, 0.5375, 1.00385}, {2., 0., -1.075,
0.997656}, {2., 0., -0.5375, 0.999499}, {2., 0., 0., 1.00211}, {2.,
0., 0.5375, 1.00395}, {2., 0.26875, -1.075, 0.997872}, {2.,
0.26875, -0.5375, 0.999716}, {2., 0.26875, 0., 1.00232}, {2.,
0.26875, 0.5375, 1.00417}, {2., 0.5375, -1.075, 0.998178}, {2.,
0.5375, -0.5375, 1.00002}, {2., 0.5375, 0., 1.00263}, {2., 0.5375,
0.5375, 1.00447}, {2., 0.80625, -1.075, 0.998394}, {2.,
0.80625, -0.5375, 1.00024}, {2., 0.80625, 0., 1.00285}, {2.,
0.80625, 0.5375, 1.00469}, {4., 0., -1.075, 0.998834}, {4.,
0., -0.5375, 1.00068}, {4., 0., 0., 1.00329}, {4., 0., 0.5375,
1.00513}, {4., 0.26875, -1.075, 0.999051}, {4., 0.26875, -0.5375,
1.0009}, {4., 0.26875, 0., 1.00351}, {4., 0.26875, 0.5375,
1.00535}, {4., 0.5375, -1.075, 0.999357}, {4., 0.5375, -0.5375,
1.0012}, {4., 0.5375, 0., 1.00381}, {4., 0.5375, 0.5375,
1.00566}, {4., 0.80625, -1.075, 0.999573}, {4., 0.80625, -0.5375,
1.00142}, {4., 0.80625, 0., 1.00403}, {4., 0.80625, 0.5375,
1.00588}, {6., 0., -1.075, 0.999667}, {6., 0., -0.5375,
1.00151}, {6., 0., 0., 1.00413}, {6., 0., 0.5375, 1.00597}, {6.,
0.26875, -1.075, 0.999884}, {6., 0.26875, -0.5375, 1.00173}, {6.,
0.26875, 0., 1.00434}, {6., 0.26875, 0.5375, 1.00619}, {6.,
0.5375, -1.075, 1.00019}, {6., 0.5375, -0.5375, 1.00204}, {6.,
0.5375, 0., 1.00465}, {6., 0.5375, 0.5375, 1.0065}, {6.,
0.80625, -1.075, 1.00041}, {6., 0.80625, -0.5375, 1.00226}, {6.,
0.80625, 0., 1.00487}, {6., 0.80625, 0.5375, 1.00672}}

• Have you tried ListDensityPlot3D? Commented May 19, 2022 at 3:46
• @ MarcoB yes I did, it shows different plot, not the one like above. Commented May 19, 2022 at 3:53
• Does this answer your question? I am trying to make a plot as given below. Can anyone help me with this? I use below code to get one but doesn't work
– Syed
Commented May 19, 2022 at 3:58
• Your previous question was marked as a duplicate of another on this site. An answer to that older question contains the plot you show as your desired output, together with code to generate that plot. You need to clearly explain what doesn't work for you when you try that code, or this question will end up closed as well. Commented May 19, 2022 at 4:01
• @Syed no that doesn't answer my question, infact, there is no solution at all. Commented May 19, 2022 at 4:04

Using your data

{fmin, fmax} = MinMax@data[[All, 4]]

(* {0.996823, 1.00672} *)

Show[
ListDensityPlot3D[data,
OpacityFunction -> 0.03,
ColorFunction -> "Rainbow",
PlotLegends -> BarLegend[{"Rainbow", {fmin, fmax}},
LegendLabel -> Style[f, 14],
LegendMarkerSize -> 250]],
Graphics3D[{AbsolutePointSize[10],
{ColorData["Rainbow"][Rescale[#[[4]], {fmin, fmax}]],
Point[Most@#]} & /@ data},
BoxRatios -> {1, 1, 1}],
PlotRange -> {{-1, 7}, {-0.2, 1}, {-1.2, 0.7}},
AxesLabel -> (Style[#, 14] & /@ {x, y, z})]


EDIT: To experiment with values for the OpacityFunction use Manipulate

Manipulate[
Show[
ListDensityPlot3D[data,
OpacityFunction -> opac,
ColorFunction -> "Rainbow",
PlotLegends -> BarLegend[
{"Rainbow", {fmin, fmax}},
LegendLabel -> Style[f, 14],
LegendMarkerSize -> 250]],
Graphics3D[{AbsolutePointSize[10],
{ColorData["Rainbow"][Rescale[#[[4]], {fmin, fmax}]],
Point[Most@#]} & /@ data},
BoxRatios -> {1, 1, 1}],
PlotRange -> {{-1, 7}, {-0.2, 1}, {-1.2, 0.7}},
AxesLabel -> (Style[#, 14] & /@ {x, y, z})],
{{opac, 0.03, "Opacity"}, 0, 0.2, 0.002, Appearance -> "Labeled"}]


dist = SmoothKernelDistribution[Most /@ data];

Show[
ContourPlot3D[
Evaluate@PDF[dist, {x, y, z}],
{x, -1, 7}, {y, -0.2, 1}, {z, -1.2, 0.7},
PlotRange -> All,
Mesh -> None,
MaxRecursion -> 0,
PlotPoints -> 100,
ContourStyle -> Opacity[0.45],
ColorFunction ->
Function[{x, y, z, f}, ColorData["Rainbow"][f]],
AxesLabel -> (Style[#, 14] & /@ {x, y, z}),
PlotLegends -> BarLegend[{"Rainbow", {fmin, fmax}},
LegendLabel -> Style[f, 14],
LegendMarkerSize -> 250]],
Graphics3D[{AbsolutePointSize[10],
{ColorData["Rainbow"][Rescale[#[[4]], {fmin, fmax}]],
Point[Most@#]} & /@ data},
BoxRatios -> {1, 1, 1}]]


I suspect that you have provided too few data points for ContourPlot3D to work well.

• @ Bob Hanlon Thank you so much! This is what I wanted to see, atleast got to know this is very much doable! I am very much thankful to you for being one of the doers rather than blabbering and commenting on post! I was tired of thes opinions without any idea! Commented May 19, 2022 at 14:35
• @K.Tamang You have a weird way of asking for help, by being insulting and demeaning to those that try to help. I'm glad Bob found the time to help you, but I can't help but feel that you could have received help sooner if you had been more forthcoming and less combative and insulting in this question and your previous ones. Commented May 20, 2022 at 0:57
• @MarcoB First of all, I would like to thank you very much for being responsive and edits since I am new in this platform. I didn't mean to demean anyone who actually are willing to understand the question, it's just for those who rather than trying to understand the problem just come up with their weird response and move away. I hope you understand. Commented May 21, 2022 at 14:57