EDA365电子论坛网
标题:
就是达不到想要的效果。
[打印本页]
作者:
zophim
时间:
2020-4-10 16:35
标题:
就是达不到想要的效果。
本帖最后由 zophim 于 2020-4-10 16:56 编辑
2 |2 r6 |* v) E D2 D0 J5 n1 q/ i$ Q, u
) b' }" T% r3 \7 e
有一堆0-2范围变动的数据,要将之按顺序画出折线图,如何让y轴大于1的区域为蓝色,小于1的为绿色?
1 `; r+ A; q4 {8 k \8 l
也参考了论坛里相关内容,但是就是达不到想要的效果。我的代码如下(为了防止数据稀疏,采用线性插值法):
6 A2 B8 @! C" S% k8 d/ @
x=1:1:100;
/ j5 o% B% W; c/ z* |1 K
y=2*rand(1,100);
" `! o$ M3 \4 t/ m. H8 n/ m. p) H; {
xi=0:1/10000:100;
' e0 ]1 v+ Y, T) i
yi=interp1(x,y,xi,'linear');
- m* L# K' E( e# @$ R0 U- y4 J
plot(xi,yi)
2 @: C+ F2 {- E1 J6 [! J: a
hold on
/ ~* H; x4 o" U. ]5 u c4 _; M1 g
area(xi(yi>1),yi(yi>1),'FaceColor','b')
( ?' B( d, x Y8 Q1 r4 q k
hold on
, k% w) Z. d# p, k3 G5 `1 v7 M- o
area(xi(yi<1),yi(yi<1),'FaceColor','g')
: |. v* f: |( V' K( t, A2 F2 W' ^7 z
: O" H) N2 `" ]
结果如图所示,但是我想让y轴数值为1的下方蓝色部分应该显示绿色,原先绿色部分应该是白色。
8 l/ m$ I* D; U0 j# O* M9 J* ?6 o
请教大神,非常感谢!
& N" a0 S: T) m' |
1.jpg
(36.24 KB, 下载次数: 7)
下载附件
保存到相册
2020-4-10 16:34 上传
) b! ^0 n; t! N
作者:
Zedd
时间:
2020-4-10 18:11
你可以试试换个思路,先把f(x)下区域全部涂蓝,再把y = 1下区域全部涂绿,最后把f(x)与y = 1下的交集涂白
/ [) V' S# g, e- ^ O! W6 C
x = 0:1:20;
% ?! @" }6 c" T. v8 J3 S
y = 2*rand(1,21);
1 Y( \, N# W. U2 M0 R1 \ \5 I
xi = 0:1e-2:20;
6 d: X0 p1 P9 s/ @& X! h; G
yi = interp1(x,y,xi,'linear');
0 e; n6 T& t. z
close all;hold on
4 j b" S2 Q) v8 q) R8 P# x+ h
area(xi(yi>1),yi(yi>1),'FaceColor','b')
+ j- G0 l( }2 N+ q% c# ?, x# ?7 w- c
area(xi(yi<1),0.*xi(yi<1)+1,'FaceColor','g')
U3 s7 j. T4 Q2 q$ [ Q# Q
area(xi,bsxfun(@min, yi, 1),'FaceColor','w')
; e# H3 e& f3 S% _
plot(xi,yi,'k-','LineWidth',2)
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2