2016-02-27 57 views
1

我想用「過渡facecolor」(我不知道正確的術語)在Matlab中給一個矩形上色,這意味着例如從地獄藍轉變爲深藍;你也可以把它解釋爲一個陰影(在這裏你可以看到一個例子:Matlab中的「Transition-FaceColor」

http://il1.picdn.net/shutterstock/videos/620653/thumb/1.jpg?i10c=img.resize(height:160)

我能想象用顏色表來實現它,但我不知道如何應用它的文本註釋像一個矩形。

是否有可能修改Matlab的標準(單色)的顏色以這樣的方式?如果是這樣,是否有人有一個基本的框架呢?

回答

0

您可以使用patch,它允許創建矩形具有內插的臉部顏色

然後,爲了讓臉色從深藍色到亮藍色,您必須定義自己的「藍色」colormap

colormap應定義爲一個(N x 3)RGB陣列:在你的情況下,必須設定爲0前兩列(對應於red和​​和具有所述第三列(blue的值)範圍爲(start_blue,end_blue)其中start_blue是你想要的最暗的藍色級別,end_blue最亮(均必須01之間)。

% 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]) 

enter image description here

希望這有助於。

Qapla'

+0

太棒了!這正是我所期待的 - 你已經完美地描述了它。真的非常感謝你!你過去是否自己使用過這些代碼,或者你是否爲我創建了它?作爲後者,我非常感謝它:)謝謝 –

+0

不客氣,happu我一直在使用你。爲了解決這個問題,你能否將答案標記爲「已接受」。 –