在matlab中组合2个轮廓。

时间:2014-06-01 20:38:35

标签: matlab contourf

我正在用Matlab创建自己的Shakemap(到目前为止,Shamemap)。 Shakemap表示地图中地面震动的强度(google up up for more info)。我希望它类似于USGS中的那些,它们使用喷射色图绘制强度,并且它们控制着色以表示高度测量数据。到目前为止,我还没有弄明白他们是如何做到这一点的。

我有一组坐标位置高度(来自NASA的SRTM),在同一组坐标系中,我有一些地面震动参数。

[lat long SRTM]

[lat long GroundShaking]

我可以单独勾勒它们,但是如果我把它们放在同一个图中,就像那个覆盖另一个。

我怎么能把它们放在同一个图中?我已经考虑过为每个位置分配一个新值,以便新值考虑到这两个度量;具有相同GroundShaking参数的位置应该是相同的颜色,但如果一个更高,那么该颜色应该更暗。不幸的是,我不知道如何实现这一点。我还考虑过手动设置alpha功能,但我不能让它只适用于Ground Shaking数据。有什么建议吗?

MWE:

x=0:0.01:1;
y=0:0.01:1;
[xx,yy]=meshgrid(x,y);
asd1=zeros(length(x),length(y));
ads2=asd1;
for i=1:length(x)
    for j=1:length(y)
        asd1(i,j)=x(i)*y(j);
        asd2(i,j)=x(i)*x(i)+y(j)*y(j);
    end
end
c1=griddata(x,y,asd1,xx,yy, 'linear');
c2=griddata(x,y,asd2,xx,yy, 'linear');
contourf(asd1)
contourf(asd2)
alpha(0.5)

(MWE与地图无关,因为数据很大)

1 个答案:

答案 0 :(得分:0)

您需要添加hold on,以便不会覆盖第一个图。这个几乎有效。

colormap gray
map1=colormap
colormap jet
map2=colormap

M=[map1;map2];
asd2=asd2*(max(asd1(:))-min(asd1(:)))/(max(asd2(:))-min(asd2(:)));
asd2=asd2-max(asd2(:));

colormap(M)
caxis([min(asd2(:)) max(asd1(:))])
figure(1)
contourf(asd1)
figure(2)
contourf(asd2)