0
$\begingroup$

With dimension reduction, It's possible to visualize image data in 2D by using the PlotMarkers option:

ListPlot[List /@ xy, 
PlotMarkers -> (Image[#, ImageSize -> 100] & /@ tree), 
ImageSize -> 2000]

(which comes from here: https://www.wolfram.com/language/11/improved-machine-learning/visualize-a-dataset-using-feature-extraction.html?product=mathematica)

However, if one wishes to have 3D dimension reduction with images as points, you can't really do that.

I have seen a post that says one can replace the points in ListPointPlot3D with shapes like so:

lpdata = Table[(4 Pi - t) {Cos[t + Pi/2], Sin[t + Pi/2], 0} + {0, 0, t}, {t, 0, 4 Pi, .1}];

lpp1 = ListPointPlot3D[lpdata, 
    Filling -> Bottom,  ColorFunction -> "Rainbow", BoxRatios -> 1, 
    FillingStyle -> Directive[LightGreen, Thick, Opacity[.5]],  ImageSize -> 400];
lpp2 = lpp1 /. Point[x__] :> (Sequence@{EdgeForm[], Cone[#, .3]} &@
        ({x} /. {{a_, b_, c_}} :> {{a, b, c}, {a, b, .5 + c}}));

Row[{lpp1, lpp2}, Spacer[5]]

From: Point style in ListPointPlot3D

This and this post: Use a custom3D graphic for points in ListPointPlot3D

Are somewhat relevant, but I wanted to ask if it's at all possible to replace points with classic 'sprites' that are 2D images in 3D space that always face the viewer, or even just small static 2D planes in 3D space with the image projected onto it would be great.

Is any of this possible?

$\endgroup$
3
  • 1
    $\begingroup$ Well, there's Inset[]: Graphics3D[Table[Inset[Graphics[{Texture[ExampleData[{"TestImage", "Lena"}]], Polygon[{{0, 0}, {1, 0}, {1, 1}, {0, 1}}, VertexTextureCoordinates -> {{0, 0}, {1, 0}, {1, 1}, {0, 1}}]}, ImageSize -> Tiny], ConstantArray[j, 3]], {j, -4, 4, 2}]] $\endgroup$ Commented Dec 30, 2016 at 9:24
  • $\begingroup$ How can I utilise that in the context of listpointplot3d? $\endgroup$
    – Peaser
    Commented Dec 30, 2016 at 10:16
  • $\begingroup$ You seem to be well-versed in making substitutions judging from the code you posted, so: Normal[lpp1] /. Point[plist__] :> Inset[sprite, #] & /@ plist $\endgroup$ Commented Dec 30, 2016 at 10:23

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.