是否有某种方法可以使用surf()
样式数据格式来创建热图?
我有一堆z=f(x,y)
形式的分散数据(因此我使用TriScatteredInterp
使其与meshgrid
一起使用)并且我想要显示z
用热图。 surf
已经做了类似于我想要的事情,除了你必须手动旋转图形以使视图自上而下看XY平面。
基本上,我想要类似于此的东西:
但冲浪默认情况下会给你这个:
答案 0 :(得分:8)
根据Ben的回答,您可以使用view
命令。 view
允许您将绘图旋转到您希望的任何摄像机角度。
通常,您可以像这样调用命令:
view(AZ, EL);
AZ
是方位角或水平旋转,而EL
是垂直高程。这些都是度数。
在您的情况下,一旦您绘制了surf
地块,请在转到下一个view(0, 90);
之前使用subplot
。 view(0, 90);
是默认的2-D视图,这看起来直接开销。
通过这样做,您可以避免手动旋转绘图,然后使用campos
确定给定绘图时摄像机位置。 view(0, 90);
应该为您提供所需的信息。
执行view(2);
还会为您提供默认的2D视图,它等于我们所讨论的view(0, 90);
。通过view(3);
,您可以获得默认的3D视图,如图中所示。 FWIW,3D图的默认方位角和高程为AZ = -37.5, EL = 30
,当然也是。{/ p>
答案 1 :(得分:8)
虽然这里的答案已经说明了如何用冲浪做这件事,渲染3D表面感觉有点像矫枉过正......
pcolor
直接创建所需的图片
(结果略好一些 - 在轴旁边有间隙)
figure(1)
pcolor(peaks)
figure(2)
surf(peaks)
view(2)
pcolor
surf
答案 2 :(得分:4)
将视图旋转到您想要的效果。然后在终端中输入campos
。这会显示相机位置。然后,您可以使用campos( your_desired )
为将来的绘图设置摄像机位置。
例如,x, y
视图通常是:
campos([4.0000 2.5000 86.6025])