sci*_*ctn 7 matlab matlab-figure
有没有办法使用surf()样式数据格式来创建热图?
我有一堆形式的分散数据z=f(x,y)(所以我曾经TriScatteredInterp使它工作meshgrid),我想z用热图可视化.surf已经做了类似于我想要的事情,除了你必须手动旋转图形以使视图自上而下看XY平面.
基本上,我想要类似的东西:

但冲浪默认情况下会给你这个:

添加到Ben的答案,您可以使用该view命令. view允许您将绘图旋转到您希望的任何摄像机角度.
通常,您可以像这样调用命令:
view(AZ, EL);
Run Code Online (Sandbox Code Playgroud)
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,当然是度数.
虽然这里的答案已经说明了如何用冲浪做这件事,渲染3D表面感觉有点像矫枉过正......
pcolor 直接创建所需的图像
(结果略好一些 - 在轴旁边有间隙)
figure(1)
pcolor(peaks)
figure(2)
surf(peaks)
view(2)
Run Code Online (Sandbox Code Playgroud)
pcolor

surf

将视图旋转到您想要的位置。然后campos在终端中输入。这会显示相机的位置。然后,您可以用于campos( your_desired )设置未来绘图的相机位置。
例如,x, y视图通常是:
campos([4.0000 2.5000 86.6025])
Run Code Online (Sandbox Code Playgroud)