用不同颜色的matlab绘制一个时间序列

时间:2017-10-23 21:28:04

标签: matlab colors time-series matlab-figure

我想在MATLAB中重现以下情节:

enter image description here

例如,请考虑以下时间序列:

a= [1,0.5,0.25, -0.5, -0.75,0.5,1.25, -0.8,0.1,0.2,0,3,0.8, -0.9, -1,1]

如何在一种颜色中绘制高于0的值,在另一种颜色下绘制值?

1 个答案:

答案 0 :(得分:1)

诀窍是通过用NaN替换它们的值来避免绘制点。

我建议首先在两个数组中分隔a,让我们说a_loa_hi

  • a_loa,但正值替换为NaN
  • a_hia但负值替换为Nan

所以你会做这样的事情:

a_lo = a;
a_hi = a;

for i = 1:length(a)
    if a_lo(i) > 0
        a_lo(i) = NaN;
    end
    if a_hi(i) < 0
        a_hi(i) = NaN;
    end
end

然后您使用不同颜色绘制a_loa_hi,不要忘记hold on将两条曲线绘制在一起。

plot(a_lo,'r'); hold on;
plot(a_hi,'b');

以下是我用正弦波获得的一个例子:

sine wave