У меня есть наборы данных для 5 разных частот в матрице, и я хочу проиллюстрировать их с помощью графика, истории и сетки. Однако каждый тип графика использует разные цветовые карты (см. рисунок), поэтому мне нужна легенда для каждого графика.
Есть ли способ установить одну и ту же цветовую карту для всех типов графиков или указать по одной для каждого из них? Еще одна странная вещь: я могу установить цветовую карту для истории, например, с помощью инструментов фигуры, но не для обычного plot
. Для меша я должен использовать цикл hold on
, так что я думаю, установка цвета здесь отличается от определения палитры?
Редактировать:
Вот минимальный пример. Он все еще не работает, см. комментарии в коде ниже.
clear all;
close all;
clc;
% make up some data with the original format
freqLen = 5;
data = zeros(10, 3, 3, freqLen);
data(:, :, :, 1) = rand(10, 3, 3);
data(:, :, :, 2) = rand(10, 3, 3)+1;
data(:, :, :, 3) = rand(10, 3, 3)+2;
data(:, :, :, 4) = rand(10, 3, 3)+3;
data(:, :, :, 5) = rand(10, 3, 3)+4;
% reshape data so we get a vector for each frequency
dataF = reshape(data, [10*3*3, freqLen]);
% prepare colors for plot, try to get 5 colors over the range of colormap
% but I get wrong colors using both methods below!
%cols = colormap(jet);
%cols = cols(1:round(length(cols)/length(freqGHz)):end, :);
cols = jet(freqLen);
% plot samples in 3D
figure('Position', [0 0 1000 1000]);
subplot(211);
hold on;
for iF = 1:freqLen
dataThisF = dataF(:, iF);
data3D = reshape(dataThisF, [10*3, 3]);
mesh(data3D);
% try to give each "holded" mesh a different color. Not working!
% after the loop, all meshes have the last color
set(get(gca, 'child'), 'FaceColor', 'w', 'EdgeColor', cols(iF, :));
end
view(60, 20);
% plot samples
subplot(223);
hold on;
for iF = 1:freqLen
% the loop is not avoidable
% because matlab maps the colors wrong when plotting as a matrix
% at least its not using the colormap colors
plot(dataF(:, iF), 'Color', cols(iF, :));
end
% plot histogram
subplot(224);
% actually the only one which is working as intended, horray!
hist(dataF, 50);
Как я могу придать удерживаемой сетке один цвет, отличный от других? Как я могу сопоставить правильную карту цветов струи при построении матрицы с использованием простого линейного графика или, по крайней мере, получить 5 цветов из карты цветов струи (jet(5)
дает 5 разных цветов, но не от начала до конца)?