matlab - 颜色图三种颜色
问题描述
我有一个带有正电流和负电流(分别为上升流和下降流)的 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:生成给定三种颜色的颜色图,但我不明白你是如何设置颜色的,它会创建类似于上图的东西。以下与我的问题无关,尽管它具有相同的标题Matplotlib: Custom colormap with three colors。提前感谢您的任何回答。
解决方案
问题不在于颜色图错误,而在于数据值映射到颜色图的方式。这是通过用相对于零对称的东西
改变CLim
底层对象的属性来实现的,例如axes
set(gca,'CLim',[-1e-2 1e-2])
这也可以通过 UI 交互更改:编辑->颜色图...在图形菜单中。然后编辑颜色数据最小值/最大值。
推荐阅读
- python - 替换或交换 3 个列表以创建单个列表/数组
- r - 如何在我的热图上分配 9 列特定颜色的独立渐变?
- c# - 如何解决:下载多个电子表格文件时,该进程无法访问文件“**”,因为它正被另一个进程使用
- django - Embed plotly:dash figure inside django template
- javascript - iPhone / iPad - 终止应用程序时未保存 Safari 浏览器 cookie
- node.js - 为什么我的快速路由器中间件没有定义 req.route?
- vue.js - 事件高度,如使用 vue-cal 的谷歌日历
- wpf - StackPanel 水平内容对齐在 dataTemplate 中居中
- php - 如何使用php只显示全名
- java - 来自组合字符串的正则表达式数字和点(点)