Логарифмическая цветовая шкала при построении карты в MATLAB

Иногда мы сталкиваемся с ситуацией, когда при построении карты, нам нужна логарифмическая цветовая шкала. Делается это довольно просто.

Для нашего примера скачаем данные о концентрации хлорофилла (осреднённые за всё время измерений) с сайта Oceancolor.

Загрузим скачанные данные в Workspace и построим карту с распределением (если не понимаете что происходит в коде, приведённом ниже, то почитайте побольше заметок на koldunov.ru):

chl=ncread('A20021852019212.L3m_CU_CHL_chlor_a_9km.nc','chlor_a');
lat=ncread('A20021852019212.L3m_CU_CHL_chlor_a_9km.nc','lat');
lon=ncread('A20021852019212.L3m_CU_CHL_chlor_a_9km.nc','lon');
[lon,lat]=ndgrid(lon,lat);
worldmap('world')
geoshow(lat,lon,chl,'DisplayType','texture')
colorbar

На получившейся карте мало что видно и это неудивительно, ведь если мы посмотрим, на гистограмму:

histogram(chl(:))

то увидим, что распределение далеко от нормального. Это типично для распределения концентрации хлорофилла - в прибрежных районах хлорофилла много, в открытых частях океана - мало.

Поэтому логичнее построить карту с логарифмической цветовой шкалой. Для этого достаточно добавить в код строчку set(gca,'colorscale','log')

worldmap('world')
geoshow(lat,lon,chl,'DisplayType','texture')
colorbar
set(gca,'colorscale','log')

Как видите, стало намного лучше. Сделаем ещё пару изменений - закрасим берега, добавим заголовок и подкорректируем диапазон, в котором будут меняться цвета:

worldmap('world')
geoshow(lat,lon,chl,'DisplayType','texture')
colorbar
set(gca,'colorscale','log')
caxis([0.1 20])
geoshow('landareas.shp' ,'FaceColor',[0.5 0.5 0.5])
title('Chlorophyll concentration, mg m^{-3}')
 telegram

Чтобы не пропустить новые материалы с рецептами по работе с океанологическими данными, подпишитесь на канал в Telegram: https://t.me/koldunovaleksey

или в яндекс.дзен: https://zen.yandex.ru/koldunova