Ale*_*lec 5 plot wolfram-mathematica
我有一个按时间排序的三维点列表.有没有办法绘制点,以便我可以获得一个视觉表示,其中还包括列表中出现点的位置的信息?我最初的想法是找到一种方法,按照绘制它们的顺序对点进行着色.
ListPlot3D 在点上覆盖一张纸,不考虑它们的绘制顺序.
ListPointPlot只显示点,但没有说明它们的绘制顺序.在这里,我正在考虑根据它们在列表中出现的顺序对点进行着色.
ListLinePlot 与许多其他绘图功能不同,它似乎没有3D表亲.
Hei*_*ike 12
你也可以这样做
lst = RandomReal[{0, 3}, {20, 3}];
Graphics3D[{Thickness[0.005],
Line[lst,
VertexColors ->
Table[ColorData["BlueGreenYellow"][i], {i,
Rescale[Range[Length[lst]]]}]]}]
Run Code Online (Sandbox Code Playgroud)

由于你没有提供例子,我通过创建一个3d自我避免随机游走来制作一些:
Clear[saRW3d]
saRW3d[steps_]:=
Module[{visited},
visited[_]=False;
NestList[
(Function[{randMove},
If[
visited[#+randMove]==False,
visited[#+randMove]=True;
#+randMove,
#
]
][RandomChoice[{{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}}]])&,
{0,0,0},
steps
]//DeleteDuplicates
]
Run Code Online (Sandbox Code Playgroud)
(这是一种有缺陷的但是可以完成工作;它可以在3d中随机行走,避免自身,即避免在后续步骤中重新访问相同的位置).
然后我们生产100000个这样的步骤
dat = saRW3d[100000];
Run Code Online (Sandbox Code Playgroud)
这就像我理解你的数据点一样.然后,我们将这些更改颜色取决于它的步骤:
datpairs = Partition[dat, 2, 1];
len = Length@datpairs;
dressPoints[pts_, lspec_] := {RGBColor[(N@First@lspec)/len, 0, 0],
Line@pts};
datplt = MapIndexed[dressPoints, datpairs];
Run Code Online (Sandbox Code Playgroud)
这也可以像其他答案一样一次完成
datplt=MapIndexed[
{RGBColor[(N@First@#2)/Length@dat, 0, 0], Line@#1} &,
Partition[dat, 2, 1]
]
Run Code Online (Sandbox Code Playgroud)
但我倾向于避免这种结构,因为我发现它们更难以阅读和修改.
最后绘制结果:
Graphics3D[datplt]
Run Code Online (Sandbox Code Playgroud)

随着时间的推移,路径变得越来越红.
如果这是你想要的那种东西,我可以详细说明.
编辑:可能有更简单的方法来做到这一点......
编辑2:显示一大组要点,以证明在箭头不易缩放的情况下,这对于查看定性趋势是非常有用的.
EDIT3:添加了单行版本.
我认为海克的方法是最好的,但她让它变得过于复杂,恕我直言。我会用:
Graphics3D[{
Thickness[0.005],
Line[lst,
VertexColors ->
ColorData["SolarColors"] /@ Rescale@Range@Length@lst ]
}]
Run Code Online (Sandbox Code Playgroud)

(acl的数据)