Отображение цветовых полос для нескольких цветовых карт в MATLAB - PullRequest
0 голосов
/ 14 марта 2020

У меня есть изображение, которое я хочу отобразить в MATLAB и наложить некоторые данные (отдельное изображение). Я использую две разные цветовые карты для этих двух изображений, но не могу получить две цветовые полосы. Цветная панель, которая содержит обе карты, также будет в порядке. Пока это мой код:

close all; clc;

figure(1)
im1 = ind2rgb( gray2ind(mat2gray(f,[.1 1]),256), spring(256));
h1  = imshow(  im1, [.1 1] );

hold on; 

colorbar 

FA(isnan(FA))  = 0;
alpha          = ones( size(f) );
alpha(mapvis)  = 0;
im2            = ind2rgb( gray2ind(mat2gray(FA,[0 1]),256), bone(256));
h2             = imshow(  im2, [0 1] );
set(h2, 'AlphaData', alpha);

colorbar
hold off

%cdata1 = h1.CData;
%cdata2 = h2.CData;
%cc = [cdata1; cdata2];

(я включил некоторые комментарии, пытаясь объединить карты цветов, следуя этому примеру без удачи: https://se.mathworks.com/matlabcentral/answers/101346-how-do-i-use-multiple-colormaps-in-a-single-figure#Example_1), что приводит к следующий сюжет: Resulting plot. Что не совсем то, что я ищу.

1 Ответ

0 голосов
/ 15 марта 2020

Вот один из способов иметь несколько цветовых карт на одной фигуре. Идея состоит в том, чтобы наложить несколько объектов Axes друг на друга, сделать фон Axes прозрачным, чтобы их графики перекрывали друг друга. Это хорошо работает только для 2D вида. В 3D виде графики / поверхности будут накладываться друг на друга неправильно.

clear all;
close all;
clc;

ax = gca;
ax(2) = copyobj(ax, ax.Parent);
linkprop(ax, {'XLim', 'YLim', 'ZLim', 'Position', 'View'});

[x, y, z] = peaks;

% plot onto first axes
pcolor(ax(1), x, y, z);
shading(ax(1), 'interp')

% plot onto second axes, arbitrarily shifting the data to a new range
contour(ax(2), x, y, -z+10, 10);

% set the colormap and CLims of each axes
set(ax(1), 'CLim', [-10, 10], 'Colormap', parula);
set(ax(2), 'CLim', [0, 20], 'Colormap', bone);

% Make the second axes invisible
set(ax(2), 'Color', 'None', 'XColor', 'none', 'YColor', 'none', 'ZColor', 'none');

% make the colorbars
cb(1) = colorbar(ax(1), 'East');
cb(2) = colorbar(ax(2), 'South');

Вам придется вручную настраивать цветовую панель и позиции осей, как вам удобно.

enter image description here

...