How can I fill area above a plot?
119 ビュー (過去 30 日間)
古いコメントを表示
Hello, I am trying to fill the area above a curve in my top subplot. I have already filled the area beneath my lower curve but cannot seem to get the area above the upper curve. Both curves are create from sets of data points.
ax1 = subplot(2,1,1);
plot(Freq1,Gain_Upper)
hold on
basevalue = -15;
ar=area(Freq2,Gain_Lower,basevalue);
0 件のコメント
採用された回答
Star Strider
2019 年 5 月 15 日
Try this:
x = 0:10:90; % Create Data
G1 = [-1 -2 -3 -4 -5 -7 -9 -11 -12 -13]; % Create Data
G2 = [1 1 2 2 2 2 2 2 2 2]; % Create Data
figure
plot(x, G2)
axis([0 100 -15 5])
hold on
plot(x, G1)
patch([x fliplr(x)], [G1 min(ylim)*ones(size(G1))], 'r') % Below Lower Curve
patch([x fliplr(x)], [G2 max(ylim)*ones(size(G2))], 'r') % Above Upper Curve
hold off
grid
Experiment to get the result you want.
4 件のコメント
その他の回答 (1 件)
Adam Danz
2019 年 5 月 15 日
編集済み: Adam Danz
2019 年 5 月 15 日
Here you go (applied to fake data); let me know if you have any questions.
% Create fake data
Freq1 = 1:100;
Gain_Upper = linspace(0,-200,numel(Freq1))+rand(size(Freq1))*10;
% plot
figure
ax1 = axes;
plot(ax1,Freq1,Gain_Upper, 'k-','LineWidth',3)
% Form polygon
ceiling = max(ylim(ax1)); %define top of polygon as top of y axis
xp = [Freq1,fliplr(Freq1)];
yp = [Gain_Upper, repmat(ceiling,size(Freq1))];
hold(ax1, 'on')
% Fill area above curve
fill(ax1,xp,yp,'g')
If you'd like to fill the area between two lines use this line instead:
yp = [Gain_Upper, UpperLineValues];
% Where UpperLineValues contain the y coordinates of the upper line
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Line Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!