在matlab中更改图形视图

sci*_*ctn 7 matlab matlab-figure

有没有办法使用surf()样式数据格式来创建热图?

我有一堆形式的分散数据z=f(x,y)(所以我曾经TriScatteredInterp使它工作meshgrid),我想z用热图可视化.surf已经做了类似于我想要的事情,除了你必须手动旋转图形以使视图自上而下看XY平面.

基本上,我想要类似的东西: 热图

但冲浪默认情况下会给你这个: 在此输入图像描述

ray*_*ica 8

添加到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,当然是度数.


RTL*_*RTL 8

虽然这里的答案已经说明了如何用冲浪做这件事,渲染3D表面感觉有点像矫枉过正......

pcolor 直接创建所需的图像

(结果略好一些 - 在轴旁边有间隙)

figure(1)
pcolor(peaks)

figure(2)
surf(peaks)
view(2)
Run Code Online (Sandbox Code Playgroud)

结果


pcolor pcolor结果


surf 冲浪结果


Fan*_*Fox 5

将视图旋转到您想要的位置。然后campos在终端中输入。这会显示相机的位置。然后,您可以用于campos( your_desired )设置未来绘图的相机位置。

例如,x, y视图通常是:

campos([4.0000    2.5000   86.6025])
Run Code Online (Sandbox Code Playgroud)