Цветовая карта трех цветов - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть файл 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

enter image description here

Как вы можете видеть,черный не равен 0. Как убедиться, что черный равен нулю, нисходящий поток (-) - красный, а апвеллинг (+) - зеленый?Извините, если это дубликат.Я проверил вопрос MATLAB: создание цветовой карты с учетом трех цветов , но я не понимаю, как вы устанавливаете цвета, и это создает нечто похожее на рисунок выше.Следующее не имеет ничего общего с моим вопросом, хотя оно имеет тот же заголовок Matplotlib: Пользовательская цветовая карта с тремя цветами .Заранее благодарю за любые ответы.

1 Ответ

0 голосов
/ 13 декабря 2018

Проблема не в неправильной цветовой карте, а в том, как значения данных отображаются в цветовую карту.Это достигается путем изменения свойства CLim базового объекта axes с чем-то симметричным относительно нуля, например, set(gca,'CLim',[-1e-2 1e-2])

. Это также можно изменить в интерактивном режиме через пользовательский интерфейс: Редактировать -> Colormap ... в меню рисунка.Затем отредактируйте данные цвета мин / макс.

...