作业帮 > 综合 > 作业

mathematica,我有三个list,里面分别装的xyz三个坐标轴的信息,怎么在空间直角坐标系绘制出螺旋线来.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/14 17:24:55
mathematica,我有三个list,里面分别装的xyz三个坐标轴的信息,怎么在空间直角坐标系绘制出螺旋线来.
listx,listy,listz,x与y画出来的是圆,沿着z轴拉出来应该是螺旋,可是找不到直接3D画list的命令,也不会把三条轴的起点都放到原点.
你没有给出具体的 listx,listy,listz 数据,所以我就自己构造一个简单地例子来说明一下,
首先构造的三列数据如下:

listx = Table[2*Cos[t], {t, 0, 20, 1/4}];
listy = Table[2*Sin[t], {t, 0, 20, 1/4}];
listz = Table[t/5, {t, 0, 20, 1/4}];
这三列数据满足你说的要求,现在把三列数据转换成坐标的形式,即把对应的分量组合在一起,
Transpose[{listx, listy, listz}]
这样就可以使用函数 ListPointPlot3D 来画出离散的点了,如下
ListPointPlot3D[Transpose[{listx, listy, listz}]]

当然,如果你想把这些点连接起来,就在最后加上/.Point -> Line
ListPointPlot3D[Transpose[{listx, listy, listz}]] /. Point -> Line

选项 Boxed -> False 可以去掉外面的框架,选项 AxesOrigin -> {0,0,0} 作用就是把坐标轴的交点放在原点,这里我构造的数据的 listx,listy有正有负,所以你说的三条轴的起点都放到原点的话,图形就显示不完整了,而下面的这句选项
PlotRange -> {{Min@listx, Max@listx}, {Min[listy], 
   Max[listy]}, {Min[listz], Max[listz]}}
是用来限定绘制的坐标轴范围,如果你的数据都是正值,那么就可以把三条轴的起点都放到原点.

ListPointPlot3D[Transpose[{listx, listy, listz}], Boxed -> False, 
  AxesOrigin -> {0, 0, 0}, 
  PlotRange -> {{Min@listx, Max@listx}, {Min[listy], 
     Max[listy]}, {Min[listz], Max[listz]}}] /. Point -> Line

大体过程就是这样子了,更多的图形选项及细节,可以查看帮助.