用不同颜色的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_lo
和 a_hi
。
a_lo
是 a
但正值被 NaN
替换。
a_hi
是 a
但负值被 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_lo
和a_hi
,别忘了hold on
将两条曲线绘制在一起。
plot(a_lo,'r'); hold on;
plot(a_hi,'b');
这是我可以用正弦波获得的示例:
我想在 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_lo
和 a_hi
。
a_lo
是a
但正值被NaN
替换。a_hi
是a
但负值被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_lo
和a_hi
,别忘了hold on
将两条曲线绘制在一起。
plot(a_lo,'r'); hold on;
plot(a_hi,'b');
这是我可以用正弦波获得的示例: