Существует несколько способов определить ваши патчи , а также несколько способов покрасить их . Вот способ создать ваши данные координат без цикла for и построить и раскрасить ваши патчи с помощью одного вызова функции patch
:
x = [NaN 1 3 7 9 23 8]; %# Sample x data
y = [NaN 2 6 7 8 2 1]; %# Sample y data
z = [NaN 1 4 5 5 4 1]; %# Sample z data
N = numel(x); %# The number of sample data points
X = [x; x([1 1],[N 1:N-1]); x]; %# X coordinates (one patch per column)
Y = [y; y([1 1],[N 1:N-1]); y]; %# Y coordinates (one patch per column)
Z = [z; z([N 1:N-1]); zeros(2,N)]; %# Z coordinates (one patch per column)
C = round(63.*Z./max(Z(:)))+1; %# Color map index
map = [linspace(0,1,64).' ... %'# Color map (64 values spanning from
ones(64,2)]; %# white to cyan)
figure(); %# Open a new figure
patch(X,Y,Z,C,'FaceColor','interp',... %# Plot the patches
'EdgeColor','none');
colormap(map); %# Update color map
hold on; %# Add to the plot
line(X(1:2,:),Y(1:2,:),Z(1:2,:),... %# Plot the line
'Color','b','LineWidth',2);
view(3); %# Change the view
И это даст вам следующий график с пятнами, окрашенными в белый цвет при самых высоких значениях и переходящими в голубой при самых низких значениях:
Объяснение индексированного цветового отображения ...
Переменная map
, приведенная выше, представляет собой матрицу 64 × 3 со значениями от 0 до 1. Каждая строка представляет триплет RGB , определяя таким образом уникальный цвет в диапазоне от голубого в строке 1 до белого. в строке 64. Используется в качестве карты цветов рисунка. Данные цвета лица в C
представляют собой набор индексов строк в этой цветовой карте, по одному для каждого значения в Z
. Самые низкие значения в Z
сопоставляются с индексом 1 (голубой на цветовой карте), а самые большие значения отображаются с индексом 64 (белый на цветовой карте).