У меня есть 2-х строчный график в Matlab, где каждая линия окрашена в соответствии со значением. Я хотел бы добавить цветовую шкалу, показывающую цвет, соответствующий этим значениям.
У меня есть решение для построения линий в соответствии с желаемым значением, однако я не могу понять, как правильно получить цветовую панель. Я искал это, но застрял.
- Задайте цветовую матрицу RGB COL. (N x 3 матрицы от красного к темному, соответствующие равноотстоящим значениям 0: 1).
- Отсортируйте данные по их значению z.
- Интерполируйте матрицу COL, чтобы получить значения для всех значений z, получив матрицу TRUECOL для строк.
- Установите порядок цветов по оси на матрицу TRUECOL и постройте данные.
минималистичный пример:
% Generate 10 lines of 10 points
x = normrnd(0,1,10,10);
% The corresponding values are
% Note that these do not have to linearly spaced in real code
z = [0,0.05,0.1,0.11,0.12,0.2,0.4,0.45,0.8,0.9];
% Define colormatrix
COL = [0.996078431372549 0.878431372549020 0.823529411764706;...
0.937254901960784 0.231372549019608 0.172549019607843;...
0.403921568627451 0 0.0509803921568627];
% Interpolate the COL matrix to get colors for the data
TRUECOL = interp1(linspace(0,1,3),COL,z,'pchip');
% Set the axis coloring qnd plot the data
set(gcf,'DefaultAxesColorOrder',TRUECOL);
plot(x);
colormap(TRUECOL);
colorbar
Затем я меняю цветовую карту и рисую колобар, однако цвета на палитре не соответствуют значениям z. Есть ли способ сказать Matlab, какой цвет соответствует какому значению? Глядя на редактор цветовой шкалы, я вижу, что CData должно иметь к этому какое-то отношение, но я не могу найти способ указать, что CData должно быть z.