# Converting 3d points into a density plot

Is there a way to convert an array of values $$(x_i,y_i,z_i), i=1,\ldots,n$$ to a density plot instead of a ListPointPlot3D?

I don't know if this is duplicated, but somehow, I cannot seem to just use ListDensityPlot3D?

Hard to know exactly what you want without the explicit data, but maybe you'd like to bin the data?

SeedRandom;
pts = RandomReal[{0, 1}, {1000, 3}];

centers = Tuples[Range[.1, .9, .2], 3];

nf = Nearest[centers];

ListDensityPlot3D[KeyValueMap[Append, CountsBy[pts, First@*nf]]] • Hi Chip, something like this is the kind of thing exactly! But is it possible, rather than grey and orange, to have high density regions be more opaque and low density more transparent? – MKF Feb 12 at 5:33
• See OpacityFunction in the ListDensityPlot3D ref page here. – Chip Hurst Feb 12 at 13:22

Using Chip Hurst's example data:

SeedRandom;
pts = RandomReal[{0, 1}, {1000, 3}];


### SmoothKernelDistribution + DensityPlot3D

pdf[x_, y_, z_] := PDF[SmoothKernelDistribution[pts, MaxExtraBandwidths -> 0,
MaxMixtureKernels -> All], {x, y, z}]
DensityPlot3D[Evaluate[pdf[x, y, z]], {x, 0, 1}, {y, 0, 1}, {z, 0, 1},
ColorFunction -> (Directive[Opacity[#], Blend[{{0, White}, {0.5, Blue}, {1, Red}}, #]] &),
PlotLegends -> Automatic] DensityPlot3D[Evaluate[pdf[x, y, z]], {x, 0, 1}, {y, 0, 1}, {z, 0, 1},
OpacityFunction -> Function[f, f/20],
ColorFunction -> (Blend[{{0, White}, {0.5, Blue}, {1, Red}}, #] &),
PlotLegends -> Automatic] ### HistogramList + ListDensityPlot3D

ListDensityPlot3D[HistogramList[pts, 10][], DataRange -> {{0, 1}, {0, 1}, {0, 1}}] • This is the kind of thing kglr, is there a way to change it so the density points is displayed as a function of opacity? ie the more points in a neighbourhood, the denser the opacity/region? – MKF Feb 12 at 8:27
• @MKF, i updated with a ColorFunction that makes denser regions more opaque. – kglr Feb 12 at 8:46
• Wow you are amazing, thank you so much for your guidance! – MKF Feb 12 at 9:11