我正在尝试使用MATLAB创建一些图表,这些图表类似于天气网络如何显示他们在某个区域内移动的风暴,例如this。
我有1000(X,Y)坐标和相关的风暴警告值[X Y StormValue]
。 StormValue
的范围介于0:10
之间,因此我想为此范围创建colorbar
,然后使用{{1}中的相关颜色绘制每个(X,Y)坐标在2D图中。我知道如何创建3D colorbar
和mesh
图,但我很好奇,如果有一种简单的方法可以在MATLAB中进行这种类型的2D绘图。
最终我想创建一个动画,因为我有surf
所有1000(X,Y)点1分钟,但我甚至不知道从哪里开始。任何有关在MATLAB中查看内容的帮助或建议都将非常感激。
答案 0 :(得分:2)
您可以将所有风暴警告值堆叠在矩阵中(例如矩阵img
),其中img(i,j)
是与x=j
和y=i
对应的值,然后使用函数contourf
喜欢:
contourf(img, 10) %// Being 10 the number of levels
要按顺序显示它,您可以将所有值堆叠在一个阵列中,该阵列具有与“帧”一样多的层。其中img(i,j,k)
是与x=j
,y=i
和frame=k
对应的值。你可以简单地使用for循环:
s_per_frame = 0.3 %// seconds per frame
for i=1:size(img,3)
contourf(img(:,:,i), 10);
pause(s_per_frame);
end
答案 1 :(得分:0)
对于图,只需为每个图像框创建一个2d矩阵(x
和y
为stormvalues
,就像你拥有它一样。然后,您想要将每个值的强度映射到不同的颜色,您可以在最小到最大风暴值的范围内使用标准的喷射色图(10)
c_map= jet(10);
然后使用图像
显示它image(your_2D_matrix);
axis off;
colormap(c_map);
colorbar;
然后,正如@dasdingonesin建议的那样,使用getframe
拍摄图像的图形,保存它然后通过每帧刷新图形来设置动画。