matlab plot 多种颜色_[转载]Matlab之colormap应用:如何一张图用多种颜色主题

在用matlab时,大家有时会碰到这种技术问题,有两组数据,要画在一张图里,比如用两个surf函数作图。但为了区分它们,想采用不同的colormap,比如如下的这张图,我们有两个曲面但想用颜色把它们区分出来,这时应该怎样处理呢?

原则上一张图只对应一个colormap,但我们可以通过重设colormap,然后改变数据对color的映射来达到我们的目的。首先我们知道colormap其实是一个3*128的矩阵,3表征的是颜色对应的RGB码,128表示的是颜色的个数,若没有特殊限制的话,matlab会把要plot的值分成128个区间,然后按照大小去上对应的颜色。

但要应用多种colormap的话,首先我们要在它的组成上下文章,把它拆分成多个colormap颜色的组合,比如

colormap([cool(64);gray(64)])

这样color前64位是cool,后64位是gray。

然后我们做出两张图,并且得到它们的handle

hold on

h(1) = surf(X);

h(2) = surf(Y);

这时的效果是这样的

之后我们得到X,Y对应的Cdata,其实就是它们的颜色数据,若没有设置的话,这些数据和原数据是一样的。

h1CData = get(h(1),'CData');

然后就是关键,我们要把h1CData 映射到某个空间,比如[0,1];

h1Data = h1Data/max(h1Data);

类似的我们把h2Data映射到不重叠的另一个空间,比如

h2CData = get(h(2),'CData');

h2Data =

h2Data/max(h2Data)+1;

然后我们让matlab根据调整后的Cdata上色

set(h(1),'CData', h1CData );

set(h(2),'CData', h2CData );

并且调整色域

caxis([0,2])

这样就大功告成,得到了用cool colormap画的X,以及用gray

colormap画的Y了。

如下是一个例子,不过这里用的是autumn和winter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值