我有一个netcdf文件,其中有正电流和负电流(分别是上升流和下降流)。我想创建一个轮廓线,其中下沉为绿色,上沉为红色,0为黑色。到目前为止,这是我的代码,包括Mathworks网站https://nl.mathworks.com/matlabcentral/answers/81352-colormap-with-both-positive-and-negative-values上的一些代码:
%open netcdf file
ncdisp('20110810_061103.nc');
ncdisp('grid.nc');
latu=ncread('grid.nc','latitude_u');
lonu=ncread('grid.nc','longitude_u');
latv=ncread('grid.nc','latitude_v');
lonv=ncread('grid.nc','longitude_v');
u = ncread('20110810_061103.nc','vel_u'); %x axes velocity of water
v = ncread('20110810_061103.nc','vel_v');%y axes
w = ncread('20110810_061103.nc','w');%z axes
Minu=min(min(min(u)))
Minv=min(min(min(v)))
Minw=min(min(min(w)))
Maxu=max(max(max(u)))
Maxv=max(max(max(v)))
Maxw=max(max(max(w)))
figure
contourf(lonu(1:681,1:711),latu(1:681,1:711),w(1:681,1:711,20))
%code I copied from mathworks
greenColorMap = [zeros(1, 132), linspace(0, 1, 124)];
redColorMap = [linspace(1, 0, 124), zeros(1, 132)];
colorMap = [redColorMap; greenColorMap; zeros(1, 256)]';
% Apply the colormap.
colormap(colorMap);
colorbar
如您所见,黑色不是0。如何确定黑色为零,向下(-)为红色,向上(+)为绿色?很抱歉,如果这是重复的。我检查了问题MATLAB: generating a colormap given three colors,但我不明白您如何设置颜色,它会产生类似于上图的内容。以下内容与我的问题无关,尽管它具有相同的标题Matplotlib: Custom colormap with three colors。 预先感谢您提供任何答案。
答案 0 :(得分:3)
问题不在于颜色图不正确,而在于数据值映射到颜色图的方式。这是通过将基础CLim
对象的axes
属性更改为相对于零对称的东西来实现的,例如
set(gca,'CLim',[-1e-2 1e-2])
这也可以通过用户界面进行交互地更改:图形菜单中的 Edit -> Colormap ... 。然后编辑颜色数据的最小值/最大值。