Тепловая карта Matlab: создание единой цветовой шкалы для всех подграфиков

У меня есть 4 разных набора данных A,B,C,Dдля создания 4 тепловых карт на подзаголовке.

xvalues = {'1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16'};
yvalues = {'1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16'};

subplot(2,2,1)
HA = heatmap(xvalues,yvalues,A);
HA.Title = 'A';
HA.XLabel = 'area';
HA.YLabel = 'area';

subplot(2,2,2)
HB = heatmap(xvalues,yvalues,B);
HB.Title = 'B';
HB.XLabel = 'area';
HB.YLabel = 'area';

subplot(2,2,3)
HC = heatmap(xvalues,yvalues,C);
HC.Title = 'C';
HC.XLabel = 'area';
HC.YLabel = 'area';

subplot(2,2,4)
HD = heatmap(xvalues,yvalues,D);
HD.Title = 'D';
HD.XLabel = 'area';
HD.YLabel = 'area';

Поскольку каждый набор данных имеет разные максимальное и минимальное значения, тепловая карта использовала соответствующие минимальное и максимальное значения каждого набора данных для своей цветовой шкалы, поэтому все 4 графика выглядели похожими друг на друга. Есть ли способ сделать цветовую шкалу, чтобы она единообразно использовалась во всех сюжетах? (будет легче увидеть различия между сюжетами)


person Aiskya    schedule 06.12.2017    source источник
comment
Выберите цветовую шкалу для запуска от самого низкого значения в ваших четырех наборах данных до самого высокого значения в ваших четырех наборах данных, и используйте эту шкалу для всех подграфиков.   -  person Adriaan    schedule 06.12.2017
comment
Первый результат Google: mathworks.com/help/matlab/ref/caxis. html   -  person Alea Kootz    schedule 06.12.2017


Ответы (1)


Сначала вы хотите получить минимальные и максимальные значения для всех наборов данных, а затем использовать их для установки 'ColorLimits' свойство каждого тепловая карта:

minValue = min([A(:); B(:); C(:); D(:)]);
maxValue = max([A(:); B(:); C(:); D(:)]);
HA.ColorLimits = [minValue maxValue];
HB.ColorLimits = [minValue maxValue];
HC.ColorLimits = [minValue maxValue];
HD.ColorLimits = [minValue maxValue];

Вы также можете использовать функцию caxis (как обычно для других графиков), хотя вам нужно нацелить каждый объект heatmap, так как каждый из них имеет собственную цветовую карту:

caxis(HA, [minValue maxValue]);
caxis(HB, [minValue maxValue]);
caxis(HC, [minValue maxValue]);
caxis(HD, [minValue maxValue]);
person gnovice    schedule 06.12.2017
comment
Команды ColorLimits отлично работают, но я думаю, что если бы я делал какой-либо другой график, мне пришлось бы использовать вместо него caxis. - person Aiskya; 07.12.2017
comment
@Aiskya: Да, для других графиков вы должны использовать caxis для каждого объекта axes. - person gnovice; 07.12.2017
comment
Я ценю вашу помощь! - person Aiskya; 07.12.2017