0
t = 0:%pi/50:10*%pi;
plot3d(sin(t),cos(t),t)

当我执行此代码时,绘图已完成,但线条不可见,只有框。任何想法我必须更改哪些属性?

谢谢

4

1 回答 1

1

在这种情况下,第三个参数应该是大小为 (length arg1) x (length arg2) 的矩阵。

您希望plot3d表现得像 and 的扩展,plotplot2d事实并非如此。

二维图采用 x 的向量和 y 的向量,并在 (x1,y1)、(x2,y2) 等处绘制点,根据样式设置与线连接或不连接。这符合我们通常用于 2d 绘图的概念模型 - 在大多数情况下 (y = f(x)),将一件事的关系绘制为另一件事的函数。使用 2d 图还有其他方法:散点图很常见,但使用两行数据概念很容易生成散点图。

这并不能平滑地扩展到 3d,因为还有许多其他方法可以使用 3d 图来表示数据。如果你给它三个坐标向量并让它在它们之间画一条线,我们想用它做什么?这是使用 3d 绘图最有用的方法吗?

大多数包为不同类型的数据提供不同的可视化类型。Mathematica 有很多 3d 可视化类型,Python/Scipy/Mayavi2 有更多。plot3dMatlab 也有一个数字,但 Scilab 虽然通常镜像 Matlab,但在这种情况下更喜欢用函数来处理它。

我认为它就像一个等高线图:你给它一个 x 向量和一个 y 向量,它使用这些来创建 (x,y) 点的网格。第三个参数是一个矩阵,其尺寸与保存每个点的 z 坐标的 (x,y) 网格的尺寸相匹配。文档中的第一个示例做了我认为你所追求的:

t=[0:0.3:2*%pi]';
z=sin(t)*cos(t');
plot3d(t,t,z);

第一行创建一个长度为 21 的列向量

-->size(t)
 ans  =

    21.    1.  

第二行计算 sin(t) 与 cos(t) 的排列乘积的 21 x 21 矩阵 - 注意cos(t')元素中的转置。

-->size(z)
 ans  =

    21.    21.  

然后当它绘制它们时,它会绘制 (x1,y1,z11)、(x1,y2,x12)、(x2,y2,z22) 等等。它在网格中的相邻点之间绘制线,或者没有线,或者只是表面。

于 2013-01-10T11:17:58.947 回答