Shade between time series lines (log-y scale)
10 次查看(过去 30 天)
显示 更早的评论
Hello,
I'm attempting to plot between two lines on a graph that's set to a log-y scale. I've tried almost every iteration of the "fill" command that seems to appear from various sources online, which usually gives me somewhat psychedelic (but useless) results.
Suppose that:
x = 0:100
y1 = rand(1,100)+1.5
y2 = rand(1,100)+0.5
How can I fill just between the y1 and y2 lines??? I want nothing but empty space below the y2 line. Also, this is on a log-y scale, which is why I can't just tweak the "area" commands (like I did for a similar project that was not on a log-y scale.
Please help!!!
Thanks, Ryan
0 个评论
采纳的回答
Walter Roberson
2012-1-19
Your x starts from 0 (and is one point longer than y1 or y2.) If you set the axis XScale to log, then you are attempting to take log(0), which leads to problems in drawing the patch.
Without the 0 I had no problem.
x = 1:100;
y1 = rand(1,100)+1.5;
y2 = rand(1,100)+0.5;
fill([x fliplr(x)],[y1 fliplr(y2)],'r')
pause(3)
set(gca,'XScale','log','YScale','log')
drawnow()
4 个评论
Walter Roberson
2018-11-4
You did not use my revised code that has the x.' and so on.
To give it again in full:
A = xlsread('TAW_NZ');
x = A(1:100,1);
min1 = A(1:100,6);
max1 = A(1:100,7);
figure
plot(x, min1, x, max1);
fill([x.',fliplr(x.')], [min1.',fliplr(max1.')], 'r')
更多回答(3 个)
Venn Ravichandran
2012-1-19
Using stem plot might be a quick work around. I don't know why the area plots don't work.
0 个评论
the cyclist
2012-1-19
Will this suffice?
x = 1:100;
y1 = rand(1,100)+1.5;
y2 = rand(1,100)+0.5;
figure
plot(x,y1,x,y2)
fill([x,fliplr(x)],[y1,fliplr(y2)],'r')
set(gca,'YScale','log')
[Edited to include the additional fliplr, in response to Walter's comment.]
1 个评论
Walter Roberson
2012-1-19
I think you have to flip y2 as well.
Amusing that we choose the same color and same basic technique :)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Polygons 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!