Вы можете создать прямоугольник с помощью patch
, который позволяет с интерполированными цветами лица.
Затем, чтобы цвет лица варьировался от синего до ярко-синего, вы должны определить свой собственный «синий» colormap
.
colormap
должен быть определен как (N x 3)
RGB
массива: в вашем случае вы должны установить на 0
первые две колонки (соответствующие red
и green
и имеют значения третьего столбца (в blue
) в диапазоне от (start_blue,end_blue)
где start_blue
самый темный синий уровень вы хотите, end_blue
самый яркий (оба должны быть между 0
и 1
).
% Define the rectangle: lower left x, lower left y, width, height
x_rect=1;
y_rect=1;
width=10;
height=5;
% Define the patch vertices and faces
verts=[x_rect y_rect;x_rect y_rect+height; ...
x_rect+width y_rect+height;x_rect+width y_rect];
faces=[1 2 3 4];
% Define the color: the higher the brighter
col=[0; 0; 4; 4];
figure
% Create the new blue colormap
b=0.7:.01:1;
cm1=[zeros(length(b),2) b']
% Set the new colormap
colormap(cm1)
% Plot the patch
patch('Faces',faces,'Vertices',verts,'FaceVertexCData',col,'FaceColor','interp');
в качестве альтернативы, вы можете создать прямоугольник как surf
, то укажите свой собственный colormap
, как указано выше.
% Define the rectangle:
x_rect=1;
y_rect=1;
width=10;
height=5;
% Build a patch
xp=[x_rect:x_rect+width];
yp=[y_rect:y_rect+height];
% Get the number of points
n_xp=length(xp);
n_yp=length(yp);
% Create the grid
[X,Y]=meshgrid(xp,yp);
% Define the z values
Z=ones(size(X));
% Create the color matrix as uniformly increasing
C=repmat(linspace(1,10,n_xp),n_yp,1)
% Create the new blue colormap
start_blue=0.5;
end_blue=1;
b=start_blue:.01:end_blue;
cm1=[zeros(length(b),2) b']
% Set the new colormap
colormap(cm1)
% Plot the rectangle as a "surf"
surf(X,Y,Z,C)
shading interp
xlabel('X Axis')
ylabel('Y Axis')
view([0 90])
xlim([0 13])
ylim([0 9])
daspect([1 1 1])
Надеется, что это помогает.
Qapla '
Удивительный! Это именно то, что я искал - вы описали его совершенно. Спасибо Вам большое! Вы использовали этот код по своему усмотрению в прошлом или создали его только для меня? Будучи последним, я очень благодарен за это :) Спасибо –
Добро пожаловать, к счастью, я был вам полезен. Чтобы закрыть вопрос, не могли бы вы пометить ответ как «принятый». –