在 Mathematica 中按索引为 ListPointPlot3D 点着色

Colour ListPointPlot3D points by index in Mathematica

是否可以根据列表索引值对点进行着色?例如。假设我有一组坐标

l1 := {{20.729858261394142, -11.014787072072988, 20.910738872021085}, {26.754953134772755, 12.795549555413617, 12.35084230079088}, {-26.240583655553486, 14.046344120397391, 4.267648394595125}, {-28.350142916856896, -15.381100510373342, 2.203525286738756}}

然后我使用这个 Mathematica 命令

ListPointPlot3D[l1, PlotStyle -> {Blue, PointSize[0.025]}]

我希望能够将第一个点指定为红色,第二个点为绿色,第三个点为蓝色,等等

我不想将 Show[...] 与多个 ListPointPlot3D 命令一起使用...

我找到了 this related question,但是这个颜色基于 (x, y, z) 坐标值。

我解决了。我们可以使用,例如,

Graphics3D[{PointSize[0.05], Point[l1,
VertexColors -> (Blend[{Red, Green, Blue, Yellow}, #] & /@ Rescale@Range@Length[l1])]}, 
BoxRatios -> {1, 1, 1}, Axes -> False]

另一种方式:

Graphics3D[{PointSize[0.05],
    MapIndexed[ { Blend[{Red, Green, Blue, Yellow},
        (1/Length@l1) First@#2], Point[#]} &, l1]}]

在这种形式下,您可以轻松地将 Point 切换为 Sphere,后者看起来更好一些。

另一种方法,使用 ListPointPlot3D,只是为每个点加上额外的大括号,

ListPointPlot3D[{{{1, 0.5, 1}}, {{1, 1, 1}}, {{1, 1.5, 1}}},
  PlotStyle -> {
    Directive[{Red, PointSize[0.03]}],
    Directive[{Blue, PointSize[0.04]}], 
    Directive[{Black, PointSize[0.03]}]
    }
]