同一行中有多种颜色

时间:2017-11-10 15:09:49

标签: matlab plot matlab-figure

我想在Matlab中绘制一条正弦曲线。但我希望正值为蓝色,负值为红色。

以下代码只是让所有东西变红......

65456d

1 个答案:

答案 0 :(得分:4)

绘制2条不同颜色的线条,以及正/负区域的NaN

% Let's vectorise your code for efficiency too!
x = -pi:0.01:pi; % Linearly spaced x between -pi and pi
y = sin(x);      % Compute sine of x

bneg = y<0;      % Logical array of negative y

y_pos = y; y_pos(bneg) = NaN; % Array of only positive y
y_neg = y; y_neg(~bneg)= NaN; % Array of only negative y

figure; hold on; % Hold on for multiple plots
plot(x, y_neg, 'b'); % Blue for negative
plot(x, y_pos, 'r'); % Red for positive

输出:

output

注意:如果您对散点图感到满意,则不需要NaN值。他们只是采取行动打破界限,这样你就不会在地区之间建立联系。你可以做到

x = -pi:0.01:pi;
y = sin(x);
bneg = y<0;
figure; hold on;
plot(x(bneg), y(bneg), 'b.');
plot(x(~bneg), y(~bneg), 'r.');

输出:

output2

这很清楚,因为我的观点仅相隔0.01。更多的间隔点看起来更像散点图。