t = 0:%pi/50:10*%pi;
plot3d(sin(t),cos(t),t)
当我执行此代码时,绘图完成但行不可见,只有框。我必须改变哪些属性的想法?
由于
答案 0 :(得分:1)
在这种情况下,第三个参数应该是一个大小(长度为arg1)x(长度为arg2)的矩阵。
您希望plot3d
的行为类似plot
和plot2d
的扩展名,但事实并非如此。
2d图采用x的矢量和y的矢量,并在(x1,y1),(x2,y2)等处绘制点,根据样式设置与线或不相关联。这符合我们通常用于2d图的概念模型 - 在大多数情况下(y = f(x))绘制一个事物与另一个事物的关系的图表。这是使用二维图的其他方法:散点图很常见,但使用两行数据概念很容易产生一个。
虽然有许多其他方法可以使用3d绘图来表示数据,但这并没有顺利扩展到3d。如果你给它三个坐标向量并要求它在它们之间绘制一条线,那么我们想要用它来做什么?这是使用3d绘图最有用的方法吗?
大多数软件包为不同类型的数据提供不同的可视化类型。 Mathematica有很多3D可视化类型,而Python / Scipy / Mayavi2则有更多。 Matlab也有一个数字但Scilab,虽然通常镜像Matlab,在这种情况下更喜欢使用plot3d
函数来处理它。
我认为它就像一个轮廓图:你给它一个x矢量和一个y矢量,它用它来创建一个(x,y)点的网格。第三个参数是矩阵,其尺寸与保持每个点的z坐标的(x,y)网格的尺寸相匹配。 docs中的第一个示例执行了我认为您正在追求的内容:
t=[0:0.3:2*%pi]';
z=sin(t)*cos(t');
plot3d(t,t,z);
第一行创建长度为21
的列向量-->size(t)
ans =
21. 1.
第二行用cos(t)计算sin(t)置换的21 x 21矩阵乘积 - 注意cos(t')
元素中的转置。
-->size(z)
ans =
21. 21.
然后当它绘制它们时,它绘制(x1,y1,z11),(x1,y2,x12),(x2,y2,z22),依此类推。它在网格中的相邻点之间绘制线条,或者不绘制线条,或仅绘制曲面。