フィルターのクリア

How to fill the area between two line in a log log plot

65 ビュー (過去 30 日間)
Mainul Hoque
Mainul Hoque 2016 年 4 月 16 日
コメント済み: Star Strider 2019 年 12 月 22 日
Hi,
I want to shade the area between the lower and upper curve. I attached the dat. file so you can use this. The following simple code has been used to generate the given figure.
load limit.dat
a=limit(:,1);
upper=limit(:,2);
lower=limit(:,3);
avg=limit(:,4);
loglog(a,avg,a,upper,a,lower)
Can anybody please come with an idea. Thanks in advance.
Cheers!!
Pavel

採用された回答

Star Strider
Star Strider 2016 年 4 月 16 日
You need to edit your data to be only those greater than zero (negative and zero values will not plot on a loglog plot anyway, so you lose nothing by eliminating them), then a simple patch call works:
fidi = fopen('Mainul Hoque limit.txt','r');
limitc = textscan(fidi, '%f%f%f%f', 'CollectOutput',1);
limit = limitc{:};
a=limit(:,1);
upper=limit(:,2);
lower=limit(:,3);
avg=limit(:,4);
idx = upper>0 & lower>0 & avg>0; % Eliminate Negative & Zero Data
figure(1)
patch([a(idx)' fliplr(a(idx)')], [lower(idx)' fliplr(upper(idx)')], [0.8 0.8 0.8])
hold on
plot(a(idx),avg(idx), a(idx),upper(idx), a(idx),lower(idx))
hold off
set(gca, 'XScale', 'log', 'YScale','log')
I used a light gray triple [0.8 0.8 0.8] for the fill colour. Use whatever colour works for you.
  6 件のコメント
Samuel diabate
Samuel diabate 2019 年 12 月 22 日
I focussed on the PSD vector and I didn't think about checking the frequency vector. It works great now, with your help.
Thanks a lot and sorry for the inconvenience.
Star Strider
Star Strider 2019 年 12 月 22 日
No worries.
A Vote would be appreciated!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchange2-D and 3-D Plots についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by