根据当前的色彩图选择一种颜色

时间:2017-03-16 07:01:17

标签: matlab colors surface

我的图表包含许多半透明的等值面以显示密度。我选择70:140范围内的颜色:

vs=griddata(x,y,z,v,xs,ys,zs,'linear');
for i=70:5:140
  p(i)=patch(isosurface(xs,ys,zs,vs,i));
  isonormals(xs,ys,zs,vs,p(i));
  rd=(i-70)/70;
  set(p(i),'facealpha',0.5);
  set(p(i),'FaceColor',[rd 0 1-rd],'EdgeColor','none'); % set colors
end;
alpha(0.3);

因此,这里的颜色从蓝色(密度= 70)到红色(密度= 140)不等。 如何从当前的colormap获取给定范围的颜色?

2 个答案:

答案 0 :(得分:1)

文档说明here如何使用fix函数将值映射到色彩映射表。

以下是您提供的范围的示例,其中可以使用cmap(index(i),:)在[{1}}范围内i访问颜色:

rng

此示例输出以下图表: image of matlab plot

答案 1 :(得分:0)

我不确定我到底知道你在问什么,但你也可以查看命令caxis,它将根据当前colormap的范围设置颜色的缩放比例。可以与hsv之类的函数一起使用,将色彩映射设置为所请求的长度,并将值缩放到该范围内。

如同,

     colormap(hsv(71));
     caxis([70 140]);
     patch(isosurface(x,y,z,v,c))
     ...