2015-08-13 37 views
1

我想標記我的圖中的某些區域,我已使用rectangle解決了這個問題。現在的問題是,我也想有網格,但這是由矩形覆蓋。有沒有辦法爲背景的不同區域着色或使網格向前移動,以便將其繪製在矩形上方?Matlab,在網格後面添加彩色字段

我的代碼如下所示:

rectangle('Position', [0 0.46 3*l+1 1.6], 'FaceColor', bg2); 
rectangle('Position', [0 0.6 3*l+1 1.6], 'FaceColor', bg); 
hold on 
grid on 
plot(Isr(:, 2), abs(Isr(:, 1)), 'r'); 
plot(Isx(:, 2), abs(Isx(:, 1)), 'b'); 
title('Current'); 
axis([0 3*l 0 1.6]); 
legend(Legend); 
xlabel('$k$'); 
ylabel('$I_F/I_{3\Phi}$'); 

下面是一個小例子:

l = 10; 
x = linspace(0,l); 

rectangle('Position', [0 0.46 l+1 1.6], 'FaceColor', 'm'); 
rectangle('Position', [0 0.6 l+1 1.6], 'FaceColor', 'g'); 
hold on 
grid on 
plot(x, sin(x), 'r'); 
plot(x, cos(x), 'b'); 
axis([0 l 0 1.6]); 
legend('Sine', 'Cosine'); 
+0

此代碼是不幸的是沒有運行的。你能否包含缺少的變量定義?另外 - 您正在使用哪個版本的MATLAB?另外,你能否上傳你想要達成的目標?這真的可以清除一切。現在你可以嘗試如果[this](http://www.mathworks.com/matlabcentral/answers/96947-how-do-i-make-grid-lines-appear-on-top-of-my-image-但在我的文本下面的對象-matlab-7-5-r2007b)幫助... –

+0

我正在使用Matlab R2014b 64位 – Kajsa

回答

3

您應該能夠通過修改Layerproperty of your axes,其中修改的網格線的佈局來完成這個和與圖形對象有關的刻度標記:

l = 10; 
x = linspace(0,l); 

myax = axes; 
rectangle('Position', [0 0.46 l+1 1.6], 'FaceColor', 'm'); 
rectangle('Position', [0 0.6 l+1 1.6], 'FaceColor', 'g'); 
hold on 
grid on 
plot(x, sin(x), 'r'); 
plot(x, cos(x), 'b'); 
axis([0 l 0 1.6]); 
legend('Sine', 'Cosine'); 
myax.Layer = 'top'; 

請注意,我還添加了一個axes調用來給我一個軸的句柄。同樣的行爲,而不該用gcaset來完成:set(gca, 'Layer', 'top');

example