在Matlab中用条件分散绘图

时间:2012-09-27 17:08:55

标签: matlab colors conditional scatter-plot

我有一个粒子数据集。

第1列是粒子的电荷,第2列是x坐标,第3列是y坐标。

我已重命名第1列c_particles,第2列x_particles和第3列y_particles。

我需要做一个x对y的散点图,但是当电荷为正时,标记必须为红色,当电荷为负时,标记必须为蓝色。

到目前为止我已经

if c_particles < 0
scatter(x_particles,y_particles,5,[0 0 1], 'filled')
else
scatter(x_particles,y_particles,5,[1 0 0], 'filled')
end

正在产生图,但标记都是红色的。

1 个答案:

答案 0 :(得分:3)

你的第一行没有按照你的想法行事:

c_particles < 0

将返回与c_particles长度相同的布尔矢量;只要至少有一个元素为真,if就会将此数组视为true。相反,您可以使用此“逻辑阵列”来索引要绘制的粒子。我会试试这个:

i_negative = (c_particles < 0);       % logical index of negative particles
i_positive = ~i_negative;             % invert to get positive particles
x_negative = x_particles(i_negative); % select x-coords of negative particles
x_positive = x_particles(i_positive); % select x-coords of positive particles
y_negative = y_particles(i_negative);
y_positive = y_particles(i_positive);

scatter(x_negative, y_negative, 5, [0 0 1], 'filled');
hold on; % do the next plot overlaid on the current plot
scatter(x_positive, y_positive, 5, [1 0 0], 'filled');