2017-06-08 57 views
-2

d1とd3の間の領域を塗りつぶしたいが、それはすべてになりますが、プロット線は領域コマンドの後に消えます。2つの水平線の間の塗りつぶし部分matlab

fGhz=[1;2;3;4;5;6;7;8;9;10]; 

d1 = ones(10,1)*(600e-6); 
d2 = ones(10,1)*(2000e-6); 
d3 = ones(10,1)*(300e-6); 

plot(fGhz, lambdan_d10,'-ok',fGhz, d1, 'b',fGhz, d3, 'g',fGhz, d2, 'r','LineWidth',2) 

%area([fGhz(1) fGhz(10)],[d1(1) d1(1)],d3(1), 'EdgeColor', 'none', 'FaceColor', [.7 .7 .7]) % plot a line between (x1,y1) and (x2,y2), then fill down to a baseline (6) 
%ylim([0 7e-3]) 
+1

[** 'hold on' **](https://www.mathworks.com/help/matlab/ref/hold.html)? –

+0

あなたは大丈夫ですが、もちろん保持します – Bobotic

+0

何がlambdan_d10の価値ですか? –

答えて

0

lambdan_d10の説明なしであなたのコードを扱うのは難しいです。それにもかかわらず、私はこの質問には重要ではないと思います。私はそれを正弦として仮定します。この地域埋める 使用四角形機能:また

% Your code 
fGhz=[1;2;3;4;5;6;7;8;9;10]; 
lambdan_d10=sin(fGhz).*10^-2.5; 
d1 = ones(10,1)*(600e-6); 
d2 = ones(10,1)*(2000e-6); 
d3 = ones(10,1)*(300e-6); 
plot(fGhz, lambdan_d10) 
plot(fGhz, lambdan_d10,'-ok',fGhz, d1, 'b',fGhz, d3, 'g',fGhz, d2, 'r','LineWidth',2) 
% Fill area 
XLIM=xlim(); 
rectangle('Position',[XLIM(1),d3(1),diff(XLIM),d1(1)-d3(1)],'FaceColor','y','EdgeColor','none') 

を私はそのような報告の数字のためのいくつかのテンプレートを持っているあなたをアドバイスします。私の例:

%% >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
%% Parameters 
fGhz = [1;2;3;4;5;6;7;8;9;10]; 
d1 = 600e-6; 
d2 = 2000e-6; 
d3 = 300e-6; 
%% >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
%% Calculations 
lambdan_d10 = sin(fGhz).*10^-2.5; 
%% >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
%% Plot results 
fig1 = figure(); 
hold all 
% plot main information 
plot(fGhz, lambdan_d10,'-ok','LineWidth',2); 
% get plot parameters 
XLIM = xlim(); 
% plot helpers 
plot(XLIM,[d1 d1], '-b','LineWidth',2) 
plot(XLIM,[d2 d2], '-r','LineWidth',2) 
plot(XLIM,[d3 d3], '-g','LineWidth',2) 
rectangle('Position',[XLIM(1),d3(1),diff(XLIM),d1(1)-d3(1)],'FaceColor','y','EdgeColor','none') 
% annotation 
xlabel('Hz') 
ylabel('eggs') 
title('lambda-spam') 
関連する問題