在两条水平线matlab之间填充区域

时间:2017-06-08 01:28:50

标签: matlab area

我想填充d1和d3之间的区域,它会全部完成,但是区域命令之后的情节线会消失。

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 个答案:

答案 0 :(得分: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')