在Matlab中更改图像视图

8
有没有一种方法可以使用 surf() 样式的数据格式来创建热力图呢?
我有一堆散乱的数据,形式为 z=f(x,y)(所以我使用了 TriScatteredInterp 使其适用于 meshgrid),我想用热力图来可视化 zsurf 已经做了我想要的类似的事情,但是你必须手动旋转图形,使视图从上向下查看 XY 平面。
基本上,我想要这样的东西: Heat maps 但 surf 默认会给你这个: enter image description here
3个回答

9

除了Ben的答案,你还可以使用view命令。 view命令允许你将图形旋转到任何你想要的视角。

通常,你可以这样调用该命令:

view(AZ, EL);
AZ是方位角或水平旋转角度,而EL则是垂直仰角,两者均以度数表示。
在您的情况下,一旦绘制出surf图,使用view(0, 90);在进入下一个subplot之前。 view(0, 90);是默认的二维视图,这样可以直接俯视。
通过这样做,您可以避免手动旋转图形,然后使用campos确定给定图形的摄像机位置。 view(0, 90);应该给您所需的内容。

附注

进行view(2);还可以为您提供默认的二维视图,这等同于我们讨论的view(0, 90);。通过执行view(3);,这将为您提供默认的三维视图,就像您的图形中看到的那样。顺便说一句,默认的方位角和仰角为AZ = -37.5,EL = 30,当然是以度数表示。

9
尽管这里的答案已经展示了如何使用surf进行操作,但渲染3D表面感觉有些过度...

pcolor可以直接创建所需的图像

(结果稍微好一点-surf在轴旁边有一个间隙)

代码

figure(1)
pcolor(peaks)

figure(2)
surf(peaks)
view(2)

结果


pcolor pcolor 结果


surf surf 结果


哇,pcolor。我不知道有这个函数。谢谢! - rayryeng

5
旋转视角至所需位置,然后在终端中输入campos。这将显示相机位置。接着,您可以使用campos( your_desired )来设置未来图形的相机位置。
例如,x, y视角通常是:
campos([4.0000    2.5000   86.6025])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接