按照列表中的点顺序绘制颜色图 - Mathematica

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)

渐变线


acl*_*acl 5

由于你没有提供例子,我通过创建一个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:添加了单行版本.


Mr.*_*ard 5

我认为海克的方法是最好的,但她让它变得过于复杂,恕我直言。我会用:

Graphics3D[{
  Thickness[0.005], 
  Line[lst, 
   VertexColors -> 
    ColorData["SolarColors"] /@ Rescale@Range@Length@lst ]
}]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

(acl的数据)

  • 你说得对,巫师先生,这种方式要优雅得多(顺便说一句,是她)。 (2认同)