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

Plotting one time-series in different colors matlab

我想在 MATLAB 中重现以下绘图:

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

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 的值,并用另一种颜色绘制低于 0 的值?

诀窍是通过用 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');

这是我可以用正弦波获得的示例: